我想更改 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引用,只能找到添加列的方法,但没有关于改变约束的方法。所以,如果你知道如何做到这一点,请告诉我。
干杯!
答案 0 :(得分:1)
创建表后无法更改主键。您需要创建一个包含您希望拥有的架构的新表,然后使用COPY TO
和COPY FROM
或insert 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