本文為mariadb官方手冊:rename table的譯文。
原文:我提交到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...