如何更改 table 中的现有主键?

How do I alter an existing primary key in a table?

我有一个 table,其中已经定义了一个主键。我想向其中添加一列,该列也必须是主键的一部分。怎么做到的?

如果 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); 

在单个查询中执行此操作的优雅方法

在MYSQL

ALTER TABLE TABLE_NAME DROP PRIMARY KEY, ADD PRIMARY KEY(ID,ID_1);

对于火鸟:-

ALTER TABLE TABLE_NAME DROP CONSTRAINT TEST_CONST, ADD PRIMARY KEY (ID,ID_1)

你不能做这一步,用 firebird

你必须做,引用上面的例子

改变TABLEMY_TABLE删除约束PK_MY_TABLE;

更改 table 添加 id_1;

提交;

改变tableMY_TABLE 添加约束 PK_MY_TABLE 主键(ID,ID_1);

提交;

强烈建议您在单独使用数据库时执行此操作

您可以使用执行块来完成:

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