我有2张桌子。如果值存在于其他表中,我需要在插入一个表之前检查。
答案 0 :(得分:1)
IF NOT EXISTS(SELECT * FROM TableA WHERE Col1 = @Value) INSERT INTO TableB(Col1)SELECT @Value
答案 1 :(得分:1)
我建议您首先检查将在每个请求中插入的记录。
Create Proc Testing
as
Set NoCount ON
Set XACT_ABORT ON
Begin Try
Begin Tran
IF Not Exists(SELECT 1 FROM Table2 i JOIN Table1 t ON i.key = t.key)
Begin
//Your insert statement
END
Commit Tran
End Try
Begin Catch
Rollback Tran
End Catch
答案 2 :(得分:-1)
或许使用INSERT trigger?
我对语法不太确定。
CREATE TRIGGER InsertTableTrigger ON Table1 FOR INSERT
AS
BEGIN
IF EXISTS ( SELECT 1 FROM Inserted i JOIN Table1 t ON i.key = t.key )
BEGIN
RAISERROR('Transaction Failed.',16,1)
ROLLBACK TRAN "insert on Table1"
END
END
GO
Inserted用于访问插入值。