我有一个表,其中已经定义了主键。我想为它添加一列,它也必须是主键的一部分。怎么办?
答案 0 :(得分:6)
如果PK_MY_TABLE
是现有主键的约束名称:
ALTER TABLE MY_TABLE DROP CONSTRAINT PK_MY_TABLE;
COMMIT;
alter table MY_TABLE
add constraint PK_MY_TABLE
primary key (ID,ID_1);
或
ALTER TABLE MY_TABLE DROP CONSTRAINT PK_MY_TABLE, ADD CONSTRAINT PK_MY_TABLE PRIMARY KEY (ID,ID_1);
答案 1 :(得分:2)
在单个查询中执行此操作的优雅方法
在MYSQL中
ALTER TABLE TABLE_NAME DROP PRIMARY KEY, ADD PRIMARY KEY(ID,ID_1);
FOR FIREBIRD: -
ALTER TABLE TABLE_NAME DROP CONSTRAINT TEST_CONST, ADD PRIMARY KEY (ID,ID_1)
答案 2 :(得分:1)
你无法做到这一步,使用firebird
你必须这样做,引用上面的例子
ALTER TABLE MY_TABLE DROP CONSTRAINT PK_MY_TABLE;
alter table add id_1;
COMMIT;
改变表MY_TABLE 添加约束PK_MY_TABLE 主键(ID,ID_1);
提交;
强烈建议您在单独使用数据库时完成此操作
答案 3 :(得分:0)
您可以使用执行块来实现:
EXECUTE BLOCK
AS
DECLARE NOMBRE VARCHAR(100);
BEGIN
FOR
SELECT RDB$CONSTRAINT_NAME FROM RDB$RELATION_CONSTRAINTS WHERE RDB$RELATION_NAME = 'MY_TABLE' AND RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
INTO NOMBRE
DO
IF (NOMBRE IS NOT NULL) THEN
BEGIN
EXECUTE STATEMENT 'ALTER TABLE MY_TABLE DROP CONSTRAINT ' || NOMBRE;
END
SUSPEND;
END