翻譯 MariaDB RENAME TABLE語句

2022-02-20 10:54:01 字數 1429 閱讀 9843

原文:

我提交到mariadb官方手冊的譯文:

rename

table tbl_name

[wait n | nowait]

to new_tbl_name

[, tbl_name2 to new_tbl_name2] ...

該語句可以重新命名乙個或多個表或檢視,但不會改變與它們相關的許可權。

rename操作是原子性的,這意味著其他會話無法訪問正在執行的rename語句所涉及的表。無法命名為已存在的表或檢視,但可以通過小技巧來實現。例如,如果已存在乙個表old_table,可以建立另乙個具有相同結構的空表new_table,然後使用該空表替換已存在的表(假定不存在backup_table表):

create

table new_table (...);

rename

table old_table to backup_table, new_table to old_table;

tab_name可以指定為db_name.tbl_name。見identifier qualifiers

。這使得rename可以將表從乙個資料庫移動到另乙個資料庫下(只要兩個資料庫在同一檔案系統下):

rename

table db1.t to db2.t;

注意,如果已經存在涉及表的觸發器,則無法跨資料庫移動,將產生類似如下的錯誤資訊:

error 1435 (hy000): trigger in wrong schema
檢視同樣無法跨資料庫移動:

error 1450 (hy000): changing schema from

'old_db' to 'new_db'

isnot allowed.

rename table無法操作臨時表,可以使用alter table來實現:

create

temporary

table t1 (c int);

alter

table t1 rename

to t2;

如果rename table重新命名了多於乙個表且其中乙個命名失敗時,所有的包括已經執行命名操作的表都會回滾,因為rename操作是原子性的。

rename操作按照語句中指定的順序對錶進行重新命名。鑑於此,可以交換兩表之間的資料:

rename

table t1 to tmp_table,

t2 to t1,

tmp_table to t2;

從mariadb 10.3.0開始,引入wait/nowait選項,可以設定鎖等待超時時間。見我的另一篇翻譯:wait and nowait

python翻譯 Python翻譯

translator.py coding utf 8 author inspurer 月小水長 pc type lenovo create time 2019 4 6 15 44 file name translator.py github qq郵箱 2391527690 qq.com import...

翻譯外掛程式的不翻譯屬性

最近在寫乙個片假名注音外掛程式,提到,注音內容不要被翻譯外掛程式翻譯。開始在網上找到谷歌翻譯的不翻譯屬性,但是國內流行的彩雲小譯和有道不支援。由於它們的官網沒有相關說明,所以只能分析它們的外掛程式看看。谷歌翻譯,只要在標籤的class裡面增加notranslate即可。彩雲小譯,可以在標籤的clas...

mysql 翻譯函式 Mysql翻譯拼音

ps 這個似乎在翻譯多音字的時候會有漏洞,不過不會很嚴重 in string varchar 21000 mediumtext begin declare tmp str varchar 21000 charset gbk default 擷取字串,每次做擷取後的字串存放在該變數中,初始為函式引數i...