【问题标题】:unique constraint check not enforced未强制执行唯一约束检查
【发布时间】:2010-12-21 06:09:00
【问题描述】:
create table A (id, field1, field2, field3, field4)

我有一个unique constraint on field1, field2, field3,表中存储了以下记录

例如

insert into A (1, "f1", null, "f3", "f4");
insert into A (2, "f1", null, "f3", "f4");
insert into A (3, "f1", null, "f3", "f4");

我希望这会引发唯一的约束违规,因为所有记录都违规,但事实并非如此。我在这里缺少什么,检查了数据库并创建了唯一约束索引。

【问题讨论】:

  • 您可以为我们发一个show create table A 吗?您在那里使用的语句没有指明数据类型。
  • 假设,它们都是字符串字段

标签: mysql h2


【解决方案1】:

Null 值永远不会等于 any 其他值,即使 null 也是如此。 null != null

这就是为什么记录 a + null + b 永远不会重复记录 a + null + b

【讨论】:

  • 我该如何避免强制执行此约束,假设 field2 仅在某些情况下包含值,而其余时间它将为空值。
  • 有没有机会设置not null default ''
  • @Jason:我不知道在 mysql 中有任何可能的方法。
  • @Jason: db4free.blogspot.com/2006/01/emulating-check-constraints.html 你可以试试这个。足够简单的解决方案。这是一个肮脏的黑客,但它有效;-)
  • 我的应用程序需要在开发/测试模式下针对多个数据库运行,因此无法对数据库进行特定修改。它们必须符合 JPA 模型
猜你喜欢
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2021-01-06
相关资源
最近更新 更多