我想设计一个看起来像这样的表:
avaya nchar(6) NOT NULL,
startDate datetime NOT NULL,
endDate datetime NOT NULL,
sup_assigned nvarchar(255) NOT NULL,
myID int NOT NULL IDENTITY (1, 1)
但是我希望在任何记录或avaya
,{{startDate
{{} sup_assigned
,avaya
和endDate
相同的位置停止任何插入/更新1}}和sup_assigned
在任何记录中都是相同的。
我最好怎么做呢?
我考虑将包含startDate
的3列数据集转换为十六进制,然后添加它们创建Key1
列,对包含endDate
的其他3列执行相同操作并有一个Key2
列。然后将Key1
和Key2
设置为复合键。
但是我收到了这个错误:
我应该如何使用MS SQL 2005执行此操作?
答案 0 :(得分:5)
更好的方法是在字段本身上仅使用几个唯一键,而不是通过创建这些派生字段来对表进行反规范化:
UNIQUE KEY key_a (avaya, startDate, sup_assigned)
UNIQUE KEY key_b (avaya, endDate, sup_assigned)
这将阻止插入任何记录,其中任何一个3路分组与数据库中的其他记录相同