MSQL唯一约束检查仅向前插入记录尚未存在的记录



该表已经有重复的条目。我想在MQSL DB中创建一个唯一的约束,而不删除现有的重复项。如果出现任何重复条目,则会显示错误。给定的blow查询在MYSQL中不起作用。

ALTER TABLE presence
ADD CONSTRAINT present uniqueness UNIQUE (employee_id,roll_number) where id >10000;
or 
ALTER TABLE presence
ADD CONSTRAINT present uniqueness UNIQUE (employee_id,roll_number) where id <> (343,34534,34534)

SQL中有类似的解决方案吗?

向表中添加一个额外的列,指示现有值。

对于现有值,将其设置为NULL。对于新行,给它一个常数值,比如1。然后在此列上创建一个唯一的索引或约束:

alter table t add constraint unique (employee_id, is_old)

事实上,我意识到您可能不希望使用单例旧值和新值进行重复。这只是将值设置为NULL的问题,仅适用于历史中的重复。因此,一行在历史数据中会有一个常数值(比如1(。

MySQL允许NULL上有重复的值,这就是为什么它可以工作的原因。

最新更新