gpt4 book ai didi

sql - MySql 复合键和空值

转载 作者:IT老高 更新时间:2023-10-29 00:07:44 26 4
gpt4 key购买 nike

我注意到,如果我有一个用于两列的唯一复合键,column_a 和 column_b,那么如果其中一列为空,我的 sql 将忽略此约​​束。

例如

如果 column_a=1 和 column_b = null 我可以随心所欲地插入 column_a=1 和 column_b=null

如果 column_a=1 和 column_b = 2 我只能插入这个值一次。

除了可能将列更改为 Not Null 并设置默认值之外,是否有应用此约束的方法?

最佳答案

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

“UNIQUE 索引创建一个约束,使得索引中的所有值都必须不同。如果您尝试添加具有与现有行匹配的键值的新行,则会发生错误。此约束不适用于 NULL 值除了 BDB 存储引擎。对于其他引擎,UNIQUE 索引允许可以包含 NULL 的列有多个 NULL 值。”

所以,不,您不能让 MySQL 将 NULL 视为唯一值。我猜你有几个选择:你可以按照你在问题中的建议进行操作并存储一个“特殊值”而不是空值,或者你可以为表使用 BDB 引擎。不过,我认为这种行为上的微小差异并不能保证对存储引擎做出不同寻常的选择。

关于sql - MySql 复合键和空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086382/

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