唯一约束 - 这些列目前没有唯一值.. ??
我创建了3列唯一约束;
我的代码完美无缺,但一次 - 两个用户同时输入了相同的数据,并以某种方式保存在数据库中;事件发生后
此UniqueConstraint给我错误 - 这些列目前没有唯一值
我如何检查用户是否输入此类条目或我如何限制 ENTRY ???
答案 0 :(得分:0)
我猜你正在使用SQL Server,在这种情况下,如果已经定义了约束,那么在插入时检查约束。根据SQL Server documentation,您所描述的内容不会发生:
数据库引擎自动 创建一个UNIQUE索引来强制执行 UNIQUE的唯一性要求 约束。因此,如果尝试 插入一个重复的行,即 数据库引擎返回错误 声明UNIQUE的消息 约束已被违反并且确实存在 不要将行添加到表中。
即使插入(几乎)同时发生,请求也将在数据库中排队,因此如果检测到约束将被违反,其中一个请求将失败。
正如Rob P所说,看起来好像是在数据库层之外创建约束。
答案 1 :(得分:0)
您能否详细说明约束以及如何强制执行这些约束?
(我认为)任何现代DBMS都应该能够同时处理并发/多个用户而不会出现约束问题。我的猜测是你正在使用ADO.NET DataSet / DataTable并自己添加约束。
如果是这种情况,我认为最简单/最好的做法是在数据库中添加约束。如果两个用户同时更新/保存,数据库将正确处理;一个将成功保存数据,另一个将收到错误。您可以优雅地在应用程序中处理该错误。