改变 Table 主键 - Crate DB

Alter Table Primary key - Crate DB

我想更改我的 Crate DB 中的 table 以更改主键约束以将一列添加到现有列。如果我需要删除约束并创建一个新约束,那么相同的 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 参考,只能找到添加列的方法,但没有关于更改 constraints.So 的方法,如果您知道如何执行此操作,请让我知道。
干杯!

首先使用以下代码片段查找约束

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

一旦创建了 table,就无法更改主键。您需要创建一个具有您想要的架构的新 table,然后使用 COPY TOCOPY FROMinsert into to_table (i) (select ... from t) 移动数据。使用 CrateDB > 2.0 也可以重命名 tables,所以你仍然可以使用原来的 table 名称。