Sql server 基于两个表的关系的约束?
基本上,我只想在表B中的列为NULL时,才允许在表A中进行编辑/更新。表A和表B引用了相同的主键idSql server 基于两个表的关系的约束?,sql-server,tsql,sql-server-2012,constraints,Sql Server,Tsql,Sql Server 2012,Constraints,基本上,我只想在表B中的列为NULL时,才允许在表A中进行编辑/更新。表A和表B引用了相同的主键id -- Only allow Table A to be updated when Table B column is NULL update TableA set blah = @a, foo = @b from tablea inner join tableb on tablea.id = tableb.id where tableb.column is null 是否有办法将其用作表a上
-- Only allow Table A to be updated when Table B column is NULL
update TableA
set blah = @a, foo = @b
from tablea
inner join tableb on tablea.id = tableb.id
where tableb.column is null
是否有办法将其用作表a上的约束?您可以使用触发器。您所说的
tableb.column为null是什么意思?
?如果我的update语句在存储过程中,并且被应用程序调用,我可以保持它的原样,还是必须将它放入触发器中?答案是:“使用插入的表在目标表中插入新值,在触发器中”。
CREATE TRIGGER tr_Instead_Update_Table_A
ON TABLEA
INSTEAD OF UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS(SELECT 1
FROM deleted d INNER JOIN TableB B
ON d.PK_Column = B.PK_Column
WHERE B.ColumnName IS NULL)
BEGIN
RAISERROR('Invalid update',16,1)
RETURN;
END
-- Your update statement here
END