更改表主键 - Crate DB

时间:2017-07-23 12:24:39

标签: cratedb

我想更改 Crate 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']

我检查了Alter表的SQL引用,只能找到添加列的方法,但没有关于改变约束的方法。所以,如果你知道如何做到这一点,请告诉我。
干杯!

2 个答案:

答案 0 :(得分:1)

创建表后无法更改主键。您需要创建一个包含您希望拥有的架构的新表,然后使用COPY TOCOPY FROMinsert into to_table (i) (select ... from t)移动数据。使用CrateDB> 2.0它也可以重命名表,因此您仍然可以使用原始表名。

答案 1 :(得分: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;

P.S:考虑到您正在使用SQL SERVER