NONVALIDATE约束非oracle数据库?



我在我的项目中使用亚马逊RDS,我通过MySQL工作台访问。我已经有一个已经存在的表,在该表是一个列,需要是唯一的。但是在同一列中存在一些重复的值。

当使用ALTER TABLE table_name ADD UNIQUE(column_name)时,我得到一个错误,在该列中有重复的条目。

我在网上搜索,发现oracle数据库有NONVALIDATE约束状态,这意味着约束检查新的或修改的行,但现有的数据可能违反约束。

我正在为我的用例寻找类似的解决方案,任何帮助都会非常感激。

MySQL(因此MySQL的Amazon RDS)没有等同于您所描述的Oracle特性。不能向具有重复项的列添加UNIQUE约束。

可以在消除重复项后添加UNIQUE约束。要么使用UPDATE更改重复的值,要么使用DELETE删除重复的行。

您可以添加一个新列,并使用默认值填充现有行。
我们可以在两个列上创建一个唯一索引。
新列必须不为空,因为唯一约束可能允许多个空值。

create table test(id int not null);
insert into test values(1),(2),(2);
SELECT * FROM test;
| id || -: || 1 || 2 || 2 |
ALTER TABLE test ADD UNIQUE KEY(id)
为键'test.id'重复条目'2'
ALTER TABLE test ADD COLUMN other int default 1 not null;
set @oth = 0;
update test set other = @oth := @oth + 1; 
ALTER TABLE test ADD UNIQUE KEY(id,other);
SELECT * FROM test;
id | other-: | ----:1 | 12 | 22 | 3
insert into test (id) values (1)
为键'test.id'重复条目'1-1'

db<此处小提琴>

最新更新