Mysql 未强制执行唯一约束检查
我对字段1、字段2、字段3有一个Mysql 未强制执行唯一约束检查,mysql,h2,Mysql,H2,我对字段1、字段2、字段3有一个唯一约束,以下记录存储在表中 e、 g 我希望这会抛出一个唯一的约束冲突,因为所有记录都有冲突,但事实并非如此。我在这里遗漏了什么,我检查了数据库,并创建了唯一约束索引。Null值永远不等于任何其他值,甚至也不等于Null空!=空 这就是为什么记录a+null+b永远不会重复记录a+null+b您能为我们发布显示创建表a吗?您在那里使用的语句没有指示数据类型。假设它们都是字符串字段,那么我要避免强制执行此约束吗,假设field2仅在某些情况下包含值,其余时间它将为
唯一约束,以下记录存储在表中
e、 g
我希望这会抛出一个唯一的约束冲突,因为所有记录都有冲突,但事实并非如此。我在这里遗漏了什么,我检查了数据库,并创建了唯一约束索引。Null
值永远不等于任何其他值,甚至也不等于Null
<代码>空!=空
这就是为什么记录
a+null+b
永远不会重复记录a+null+b
您能为我们发布显示创建表a
吗?您在那里使用的语句没有指示数据类型。假设它们都是字符串字段,那么我要避免强制执行此约束吗,假设field2仅在某些情况下包含值,其余时间它将为空值。您是否可以设置非空默认值“”
?@Jason:我不知道在mysql中有什么可能的方法。@Jason:您可以试试这个。足够简单的解决方案。这是一个肮脏的黑客,但它的工作;-)我的应用程序需要在开发/测试模式下针对多个数据库运行,因此无法进行特定于数据库的修改。它们必须符合JPA模型
create table A (id, field1, field2, field3, field4)
insert into A (1, "f1", null, "f3", "f4");
insert into A (2, "f1", null, "f3", "f4");
insert into A (3, "f1", null, "f3", "f4");