假设我有一个包含三列的表:UserId TeamId IsTeamCaptain。如何确保每个TeamId的IsTeamCaptain列中只有一个“真实”值?假设我有五个不同的UserId属于TeamId 1,那么在这五个中只能有一个是'true',其余的必须是'false'。设置在表中的唯一值
0
A
回答
3
创建上设置一个独特的筛选索引(过滤指数是SQL Server 2008中介绍)
0
CREATE TABLE [dbo].[SampleTable](
[UserID] [int] NOT NULL,
[TeamID] [int] NOT NULL,
[IsTeamCaptain] [bit] NOT NULL)
go
create trigger triu_SampleTable on SampleTable
instead of insert, update
as
begin
set nocount on
declare @userid int, @teamid int, @isteamcaptain bit, @counter int
declare cur cursor local fast_forward for
select userid, teamid, isteamcaptain from inserted
open cur
fetch next from cur into @userid, @teamid, @isteamcaptain
while @@fetch_status = 0
begin
if @isteamcaptain = 0
insert into Sampletable(userid, teamid, isteamcaptain)
values(@userid, @teamid, @isteamcaptain)
if @isteamcaptain = 1
if exists(select * from SampleTable Where teamid = @teamid and isteamcaptain = 1)
raiserror('Not allow to add more than 1 captain per team',16,1)
else
insert into Sampletable(userid, teamid, isteamcaptain)
values(@userid, @teamid, @isteamcaptain)
fetch next from cur into @userid, @teamid, @isteamcaptain
end
close cur
deallocate cur
end
Go
这是一个触发我们的餐桌上
相关问题
- 1. 如何在iOS中设置唯一的键值给NSOperation
- 2. 如何计算表中唯一值的唯一值
- 3. 如何在C#.NET数据集表列中为唯一值设置约束?
- 4. 在SAP中为表格字段设置唯一约束条件
- 5. 如何获得在Grails中设置了一些值并且不是列表的字符串的唯一值?
- 6. Java中自定义类的唯一值设置
- 7. VBA在列表中显示唯一值
- 8. 在配置单元表中添加唯一值
- 9. 为一个表中的选定行设置唯一ID以存储在localStorage中
- 10. 列表中的Prolog唯一值
- 11. C#列表中的唯一值
- 12. 确保显式设置的主键值是唯一的
- 13. 将QTableWidget中的列设置为在Qt 5中唯一
- 14. 从SQL表中唯一值,其中从
- 15. 在Django中设置表单域的值
- 16. 设置对值组合的唯一约束
- 17. 如何设置唯一的ID与总和值
- 18. 如何取消设置包含唯一值的数组?
- 19. jQuery从1而不是0设置唯一的ID值增量
- 20. 我的唯一索引已设置?
- 21. 设置Android手机的唯一ID
- 22. 基于在它之前设置的另一个值,在lambda表达式中设置一个值?
- 23. 唯一值在Excel
- 24. 在MySQL中维护一个唯一值的大表格
- 25. 在多个表格的一列中选择唯一值
- 26. 如何在Realm中设置唯一的主键?
- 27. 在MySQL数据库中设置行的唯一ID
- 28. 如何在lucene中设置唯一的文档ID
- 29. 如何在rails中为link_to标记设置唯一的ID?
- 30. 分组列表中唯一值
我会研究它,谢谢! – 2010-12-16 11:23:46