可能重复:
SQL Server bit column constraint, 1 row = 1, all others 0
大家好,
假设我有一个名为 TableA 的表,其中包含BIT
字段。有没有什么方法可以强制表中只有一行设置为1
?
编辑:请不要触发!
非常感谢。
答案 0 :(得分:0)
您可以使用CHECK
constraint。
答案 1 :(得分:0)
CREATE FUNCTION [dbo].[CheckTestTableFlag]()
RETURNS int
as
BEGIN
DECLARE @retval int
SELECT @retval = COUNT(*) FROM Test WHERE Flag = 1;
RETURN @retval;
END;
GO
ALTER TABLE [dbo].[Test] WITH CHECK ADD CONSTRAINT [chkFlag] CHECK ([dbo].[CheckTestTableFlag]()<= 1 )
GO