我有一个表调用测试,有四个字段。我在表上创建了composit唯一键,我希望我的记录是唯一的。我们正在跟踪以前版本的记录并标记所有旧记录isdeleted = 1,但问题是,我的唯一密钥不会允许我有两个或更多的相同记录isdeleted = 1
Create table test (ApplicationID int,IsDeleted bit
CONSTRAINT test_uck UNIQUE (ApplicationID,IsDeleted)
)
go
insert into test values(1,0)
insert into test values(1,1)
insert into test values(1,1)
答案 0 :(得分:1)
这就是你想要的:
Create table test (
ApplicationID int not null,
IsDeleted bit not null
)
create unique index IX_UniqueApplications on test (ApplicationID)
where IsDeleted=0
go
insert into test values(1,0)
insert into test values(1,1)
insert into test values(1,1)
它被称为Filtered Index。您不希望ApplicationID
和IsDeleted
的组合是唯一的 - 如果没有删除,您只希望ApplicationID
是唯一的。这是两个完全不同的概念。
答案 1 :(得分:0)
尝试添加版本号字段
vNum int
到您的表格然后展开您的主键以包含该字段。
由于您无论如何都要跟踪记录的先前版本,因此您可以简单地获取该记录的最后一个版本号,然后将其增加一个。