改变 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 TO
和 COPY FROM
或 insert into to_table (i) (select ... from t)
移动数据。使用 CrateDB > 2.0 也可以重命名 tables,所以你仍然可以使用原来的 table 名称。
我想更改我的 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 TO
和 COPY FROM
或 insert into to_table (i) (select ... from t)
移动数据。使用 CrateDB > 2.0 也可以重命名 tables,所以你仍然可以使用原来的 table 名称。