Alter Table Primary key - Crate DB

一曲冷凌霜 提交于 2021-02-17 06:56:06

问题


I want to alter a table in my Crate DB to change the primary key constraint to add a column to the existing one. If I need to drop the constraint and create a new one what would be the SQL syntax for the same. I have been trying the conventional SQL syntax and it does not seem to work:

alter table my_data_table drop primary key; 

the above command gives an error:

SQLActionException[SQLParseException: line 1:34: no viable alternative at input 'alter table my_data_table drop']

I checked the Alter table SQL reference and can only find ways to add columns but nothing about altering the constraints.So if you are aware of how to do this, please let me know.
cheers!


回答1:


there's no way to alter the primary key once a table has been created. You need to create a new table that has the schema you'd like to have and then either move the data over with COPY TO and COPY FROM or with insert into to_table (i) (select ... from t). With CrateDB > 2.0 it's also possible to rename tables, so you can still use the original table name.




回答2:


First use the following code snippets for finding the constraints

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>'

Then use this to drop the constraint

ALTER TABLE Customer DROP CONSTRAINT Constraint_Name;

P.S: considering you are using SQL SERVER



来源:https://stackoverflow.com/questions/45265054/alter-table-primary-key-crate-db

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!