Cod*_*ome 0 sql hex sql-server-2005 primary-key composite-primary-key
我想设计一个看起来像这样的表:
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和sup_assigned在任何记录一样.
我该怎么做才能做到这一点?
我考虑过转换包含startDateinto为hex 的3列的集合,然后添加它们创建Key1列,与包含the endDate和列的其他3列相同Key2.然后设置Key1并Key2作为复合键.
但我得到这个错误:
我应该如何使用MS SQL 2005执行此操作?
更好的方法是在字段本身上仅使用几个唯一键,而不是通过创建这些派生字段来对表进行反规范化:
UNIQUE KEY key_a (avaya, startDate, sup_assigned)
UNIQUE KEY key_b (avaya, endDate, sup_assigned)
Run Code Online (Sandbox Code Playgroud)
这将阻止插入任何记录,其中任何一个3路分组与DB中的其他记录相同