SQL中的列约束

时间:2011-06-03 14:26:24

标签: sql constraints

  

可能重复:
  SQL Server bit column constraint, 1 row = 1, all others 0

大家好,

假设我有一个名为 TableA 的表,其中包含BIT字段。有没有什么方法可以强制表中只有一行设置为1

编辑:请不要触发!

非常感谢。

2 个答案:

答案 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