【问题标题】:MSQL unique constraint check only onward insert records Not already existing recordsMYSQL 唯一约束检查​​仅向前插入记录 不存在的记录
【发布时间】:2021-09-10 19:05:06
【问题描述】:

表中已有重复条目。我想在 MQSL DB 中创建一个唯一约束而不删除现有的重复项。如果以后出现任何重复条目,则会显示错误。鉴于打击查询在 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 中有类似的解决方案吗?

【问题讨论】:

  • 为什么不简单地修复已经坏的数据?

标签: mysql sql unique-constraint


【解决方案1】:

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

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

alter table t add constraint unique (employee_id, is_old)

实际上,我意识到您可能不希望使用单例旧值和新值进行重复。这只是将值设置为NULL 的问题,仅为历史记录中的重复项。因此,在历史数据中,一行将具有一个恒定值(例如 1)。

MySQL 允许 NULL 上的重复值,这就是它起作用的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2011-09-30
    • 2012-01-02
    • 2012-03-06
    • 2019-12-24
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多