使用状态向多列添加约束

时间:2015-08-15 06:32:28

标签: mysql sql

我有一个名为events_attendees的表,其中包含以下列,然后是一些ea_no,c_no,e_no,ea_status。

我想添加一个约束来验证列c_no,e_no的唯一行,其中ea_status = 1.

我们的系统使用状态字段进行删除,因此对于相同的c_no,e_no可能有几个ea_status = 0记录,但只要没有匹配e_no,c_no,ea_status =约束就应该允许插入1.

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

将您的表名和列名替换为代码

CREATE TABLE CheckTbl (col1 int, col2 int, col3 int, col4 int);
GO
CREATE FUNCTION CheckFnctn( @col2 int, @col3 int)
RETURNS int
AS 
BEGIN
   DECLARE @retval int
   SELECT @retval = COUNT(*) FROM CheckTbl
   where col2=@col2 and col3=@col3 and col4=1
   RETURN @retval
END;
GO
ALTER TABLE CheckTbl
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn(col2,col3) = 1 );
GO