0

我想更改我的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 table SQL 参考,只能找到添加列的方法,但没有改变约束。所以如果你知道如何做到这一点,请告诉我。
干杯!

4

2 回答 2

1

一旦创建了表,就无法更改主键。您需要创建一个具有您想要的架构的新表,然后使用COPY TOCOPY FROM或移动数据insert into to_table (i) (select ... from t)。使用 CrateDB > 2.0 还可以重命名表,因此您仍然可以使用原始表名。

于 2017-07-24T11:21:30.150 回答
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

于 2017-07-23T12:31:15.987 回答