我想在DB2中重命名錶像這樣如何在sql db2中重命名錶?
rename table schema1.mytable to schema2.mytable
但得到以下錯誤消息:
the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601
什麼是這裏的問題....我使用從確切的語法IBM publib文檔。
我想在DB2中重命名錶像這樣如何在sql db2中重命名錶?
rename table schema1.mytable to schema2.mytable
但得到以下錯誤消息:
the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601
什麼是這裏的問題....我使用從確切的語法IBM publib文檔。
您無法更改給定對象的模式。你必須重新創建它。
有severals的方式做到這一點:
您可以通過重新創建表:
Create table schema2.mytable like schema1.mytable
你可以用db2look工具提取DDL
最後兩個選項只創建表結構,您仍然需要導入數據。其創建表後,可以通過不同的方式插入數據:
直接從光標
insert into schema2.mytable select * from schema1.mytable
通過負載通過從文件加載或進口(該文件在上一步輸出)
問題是forei gn關係,因爲它們必須被重新創建。您可以創建一個alias。這很容易,你不必處理關係。
您不是在提供的示例中重命名錶,而是嘗試移動到不同的模式,它不是同一件事。查看db2move工具。
如果您保持原樣並使用新名稱和模式創建別名,該怎麼辦?
不幸的是,這實際上並沒有移動表格,它只是創建一個指向它的指針。這種_can_在某些情況下很有用,但在表需要移動時無助。 –
重命名錶意味着重命名同一模式中的表。要重命名的其他模式,DB2調用它的別名:
DB2爲
不幸的是,這並沒有實際移動表格,它只是創建一個指向它的指針。這在某些情況下可能很有用,但在實際需要移動表時不會起作用。此外,這與現有答案相同。 –
賓果!你是對的 :) – Tom123456
創建別名可以輕鬆地與這一說法重命名錶:
RENAME TABLE SCHEMA.TABLENAME TO NEWTABLENAME;
您好感謝 - 想可能有一個命令來簡單地將表移動到新的模式中,但是從實際表中在另一個模式中創建新表的方式,然後插入爲我完成這項工作。但更麻煩,但沒關係。 – brucezepplin
還有一個'ADMIN_MOVE_TABLE'系統存儲過程完全按照它的說法進行,包括所有的依賴關係。 – mustaccio
@mustaccio我也認爲ADMIN_MOVE_TABLE可以做到這一點,但文檔沒有選項來提供不同的模式:http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2 .luw.sql.rtn.doc/doc/r0055069.html – AngocA