假設我有一個包含三列的表: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