表TABLE1有一个主键PK1。需要在现有主键上再添加一列。 我正在绑定以下更改脚本
ALTER TABLE TABLE1
ADD CONSTRAINT "PRIMARYKEYS" PRIMARY KEY
("PK1",
"PK2");
Error report:
SQL Error: ORA-02260: table can have only one primary key
02260. 00000 - "table can have only one primary key"
*Cause: Self-evident.
*Action: Remove the extra primary key.
如何在不影响数据的情况下向主键添加一列(数据已经过验证,没有重复。)
答案 0 :(得分:2)
如果您担心违反PK的新数据可以在旧PK丢弃的时间间隔内添加,但未创建新数据,则可以先创建唯一索引:
CREATE UNIQUE INDEX IDXU_TABLE1_PK ON TABLE1(PK1,PK2);
ALTER TABLE TABLE1 DROP CONSTRAINT [old_pk_constraint_name] ;
ALTER TABLE TABLE1 ADD CONSTRAINT "PRIMARYKEYS" PRIMARY KEY
(PK1,PK2) USING INDEX IDXU_TABLE1_PK;
另一个选择是保持索引与旧的PK约束相关联,直到创建新的PK:
ALTER TABLE TABLE1 DROP CONSTRAINT [old_pk_constraint_name] KEEP INDEX;
ALTER TABLE TABLE1 ADD CONSTRAINT "PRIMARYKEYS" PRIMARY KEY
(PK1,PK2) ;
DROP INDEX [name of unique index associated with the old PK constraint];
答案 1 :(得分:0)
您需要先删除旧的主键。