public function getTableName($includeDbname=false)
    {
    	if (!isset($this->options['real_table_name']) || empty($this->options['real_table_name'])) {
            if(!isset($this->options['table_name']) || empty($this->options['table_name'])) {
                throw new Exception('table is not exist:' . get_called_class());
            }
            
            $realTableName = $this->options['table_name'];
            if (strpos($realTableName, '.') === false && stripos($realTableName, $this->getTablePrefix()) === false) {
                $realTableName = $this->getTablePrefix() . $realTableName;
            }
        } else {
            $realTableName = $this->options['real_table_name'];
        }
        if (isset($realTableName) && strpos($realTableName, '.') === false && $includeDbname) {
            $database = $this->getDatabase();
            $realTableName = (empty($database) ? '' : $database . '.') . $realTableName;
        }
        return $realTableName;
    }