1

SQL 有没有办法强制执行唯一列值,而不是另一个表的主键?

例如,假设我有TblDog哪些字段:

  1. DogId-Primary Key
  2. DogTag-Integer
  3. DogNumber-varchar

DogTag和字段必须是唯一的DogNumber,但不链接到任何类型的表。

我能想到的唯一方法是在创建或编辑之前提取任何匹配的DogTag记录并提取任何匹配的记录DogNumber(不包括正在更新的当前记录。)这是在创建/编辑记录之前对数据库的两次调用。

我的问题是:有没有办法设置 SQL 来强制这些值是唯一的,而不将它们设置为键,或者Entity Frameworks(没有过多调用数据库)?

我知道我可以将两个调用组合为一个,但我需要能够准确地通知用户哪个字段已重复(或两者都重复)。

编辑:数据库是 SQL Server 2008 R2。

4

5 回答 5

4

正如 MilkywayJoe 建议的那样,在 SQL 数据库中使用唯一键约束。这些在插入 + 更新期间进行检查。

ALTER TABLE TblDog ADD CONSTRAINT U_DogTag UNIQUE(DogTag)

ALTER TABLE TblDog ADD CONSTRAINT U_DogNumber UNIQUE(DogNumber)
于 2012-07-09T15:39:31.997 回答
3

我建议设置唯一约束/索引以防止重复条目。

于 2012-07-09T15:39:12.103 回答
1

ALTER TABLE TblDog 添加约束 U_DogTag UNIQUE(DogTag)

于 2012-07-09T15:49:46.920 回答
0

它看起来好像实体框架不支持它(还),卡片上。看起来您将需要使用评论中提到的唯一约束直接在数据库中执行此操作。

于 2012-07-09T15:39:22.813 回答
0

CREATE UNIQUE INDEX idxUniqueDog ON TblDog (DogTag, DogNUmber)

于 2012-07-09T15:40:17.287 回答