2017-07-23 43 views
0

我想改變我的木箱DB中的表以更改主鍵約束以向現有列添加列。如果我需要刪除約束並創建一個新的約束,那麼SQL語法也是一樣。我一直在努力傳統的SQL語法,它似乎並沒有工作:改變表主鍵 - 木箱數據庫

alter table my_data_table drop primary key; 

上面的命令給出了一個錯誤:

SQLActionException[SQLParseException: line 1:34: no viable alternative at input 'alter table my_data_table drop'] 

我查了修改表的SQL參考,只能想辦法添加列,但沒有關於改變約束。所以如果你知道如何做到這一點,請讓我知道。
歡呼!

+0

你正在使用什麼數據庫? – sam100rav

+0

它的一個箱子數據庫http://crate.io – Nachiketh

回答

1

有沒有辦法在表創建完成後更改主鍵。您需要創建一個具有您想要的架構的新表,然後使用COPY TOCOPY FROMinsert into to_table (i) (select ... from t)移動數據。使用CrateDB> 2.0時,也可以重命名錶,因此仍然可以使用原始表名稱。

+0

感謝您的澄清! – Nachiketh

0

先用下面的代碼片段查找制約

SELECT Col.Column_Name from 
    INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab, 
    INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col WHERE 
     Col.Constraint_Name = Tab.Constraint_Name 
     AND Col.Table_Name = Tab.Table_Name 
     AND Constraint_Type = 'PRIMARY KEY' 
     AND Col.Table_Name = '<your table name>' 

然後用這個砸

ALTER TABLE Customer DROP CONSTRAINT Constraint_Name; 

PS約束:考慮你正在使用SQL Server

+0

謝謝,但我使用的是一個箱子數據庫而不是SQL Server,這不會對它起作用。 – Nachiketh

+0

從[documentaion](https://crate.io/docs/crate/reference/sql/reference/constraints.html),「只有在表格爲空時纔可以添加PRIMARY KEY列」。 如果您的表格尚未包含任何數據,則可以輕鬆更新您的表格創建命令。如果表中有內容,那麼對不起,您不能更改主鍵(但可以添加另一列([使用alter table](https://crate.io/docs/crate/reference/sql/reference/alter_table.html))) 。 –