gpt4 book ai didi

mysql - 添加唯一约束但仅对新插入强制执行

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:08 24 4
gpt4 key购买 nike

我有一个包含 3 列的 mysql INNODB 表

id  |    col1    | col2

id 是主键。

该表包含对 (col1, col2) 重复不止一次的行。

我能否在 (col1, col2) 上创建一个唯一索引,该索引仅在添加 future 行时强制执行唯一性,但允许 (col1, col2) 对重复多次的现有行。

我尝试执行:

ALTER TABLE mytable ADD CONSTRAINT myconstraint UNIQUE (col1, col2)

但出现错误: 错误代码:1062。键“myconstraint”的重复条目“1-1”

最佳答案

如果您想完成这项工作,您可以添加一个名为 NullIfOld 的新列。将此列设置为新插入的常量值,并将旧记录设置为 NULL

然后创建唯一索引:

create unique index idx_mytable_col1_col2_nullifold on mytable(col1, col2, nullifold);

唯一索引允许具有 NULL 值的多行,因此您可以创建索引。如果新值是一个常量(或者甚至像 concat(col1, col2)),那么新的唯一记录将被禁止。

关于mysql - 添加唯一约束但仅对新插入强制执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25130588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com