我有oracle 11g数据库。 因此,在过去,我对表User的名称和姓氏具有uniq约束,所以 我的桌子是
id name surname age position
和约束:
alter table User add constraint UK8ut91db3xdtls2x61e63iwym4 unique (name, surname);
但是现在,我需要删除此约束,因此名称和姓氏必须不唯一。 我从基础脚本中删除了此约束:
alter table ORGANIZATION.USER drop constraint UK8UT91DB3XDTLS2X61E63IWYM4
此约束被删除:
SELECT * FROM all_constraints WHERE CONSTRAINT_NAME='UK8UT91DB3XDTLS2X61E63IWYM4'
最后一个脚本什么也不返回。
但是,如果我尝试插入具有相同名称和姓氏但具有不同ID的几行,则会出现错误
INSERT INTO ORGANIZATION.USER(id, name, surname, age, position) VALUES (111-222, 'Natalia', 'Solzhenizina', 22, 'consultant')
Error report -
ORA-00001: нарушено ограничение уникальности (constraint violetion on unique) (SBDATASVCS.UK8UT91DB3XDTLS2X61E63IWYM4)
答案 0 :(得分:0)
首先,消除约束的正确方法是:
alter table ORGANIZATION.USER drop constraint UK8UT91DB3XDTLS2X61E63IWYM4 CASCADE
如果您忘记使用它,约束的其他某些元素可能仍然有效(唯一或索引)
(可选)您可以删除具有相同名称和索引的唯一。
DROP INDEX ORGANIZATION.UK8UT91DB3XDTLS2X61E63IWYM4
alter table ORGANIZATION.USER drop UNIQUE (name, surname);