如何限制已存在于其他表中的值的插入

时间:2011-06-15 02:01:20

标签: sql sql-server-2008

我有2张桌子。如果值存在于其他表中,我需要在插入一个表之前检查。

3 个答案:

答案 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用于访问插入值。