唯一约束 - 这些列目前没有唯一值..?

时间:2011-05-08 16:58:16

标签: vb.net

唯一约束 - 这些列目前没有唯一值.. ??

我创建了3列唯一约束;

我的代码完美无缺,但一次 - 两个用户同时输入了相同的数据,并以某种方式保存在数据库中;事件发生后

此UniqueConstraint给我错误 - 这些列目前没有唯一值

我如何检查用户是否输入此类条目或我如何限制 ENTRY ???

2 个答案:

答案 0 :(得分:0)

我猜你正在使用SQL Server,在这种情况下,如果已经定义了约束,那么在插入时检查约束。根据SQL Server documentation,您所描述的内容不会发生:

  

数据库引擎自动   创建一个UNIQUE索引来强制执行   UNIQUE的唯一性要求   约束。因此,如果尝试   插入一个重复的行,即   数据库引擎返回错误   声明UNIQUE的消息   约束已被违反并且确实存在   不要将行添加到表中。

即使插入(几乎)同时发生,请求也将在数据库中排队,因此如果检测到约束将被违反,其中一个请求将失败。

正如Rob P所说,看起来好像是在数据库层之外创建约束。

答案 1 :(得分:0)

您能否详细说明约束以及如何强制执行这些约束?

(我认为)任何现代DBMS都应该能够同时处理并发/多个用户而不会出现约束问题。我的猜测是你正在使用ADO.NET DataSet / DataTable并自己添加约束。

如果是这种情况,我认为最简单/最好的做法是在数据库中添加约束。如果两个用户同时更新/保存,数据库将正确处理;一个将成功保存数据,另一个将收到错误。您可以优雅地在应用程序中处理该错误。