如何限制插入已存在于其他表中的值
我建议,你应该先检查是否打算在每个要插入的记录请求。
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
这并不能完全回答问题。这将检查该值是否存在于两个表中。问题是如何在插入'Table2'之前检查它是否在'Table1'中。如果值仅存在于“表格1”中,您的代码将允许插入。 – NullRef 2011-06-15 22:08:01
使用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
插入用于访问插入值。
如何使用插入值? – user194076 2011-06-15 02:16:24
更新了答案。您使用插入来访问值。 – Lobo 2011-06-15 02:27:33
假设我插入了一批100条记录。在100个中,它已经在其他表中包含40个记录,并且60个是新的记录。根据上面的说法,它应该回滚完整的批量! – Pankaj 2011-06-15 04:44:48
您是否需要为单个操作或* any *插入操作限制插入? – 2011-06-15 02:21:26
对于所选表格上的任何插入操作 – user194076 2011-06-15 02:22:24