sql 插入触发器后的MS SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 插入触发器后的MS SQL相关的知识,希望对你有一定的参考价值。

-- After Insert trigger
ALTER TRIGGER [Person].[ContactTypeTrigger]
      ON [Person].[ContactType] 
AFTER Insert, Update
AS 
   IF ('Batman' = (SELECT  I.Name FROM inserted I))
        BEGIN
	  RAISERROR('You can`t add Batman.',16,1);
	  ROLLBACK TRANSACTION;
	END

   IF Update(Name)
     SELECT  'Name was modified from ' 
           + D.Name 
           + ' to '
           + I.Name 
      FROM Inserted I
	  JOIN Deleted D
	  ON I.ContactTypeID = D.ContactTypeID;;
   
GO

-- Execution 1 (Success)
Update Person.ContactType 
   SET Name = 'Contractor' WHERE Name = 'Sales Manager'
-- [Output]
-- Name was modified from Sales Manager to Contractor

-- Execution 2 (Fails)
Update Person.ContactType 
   SET Name = 'Batman' WHERE Name = 'Contractor'
-- [Output]
-- Msg 50000,...
-- You can`t add Batman.

以上是关于sql 插入触发器后的MS SQL的主要内容,如果未能解决你的问题,请参考以下文章

创建触发器后的 SQL Server

如何在 MS SQL 2008 中使用触发器更新单个表

SQL Server 2017 触发器将旧值作为更新后的新值

sql MS SQL触发器语法

sql MS SQL而不是触发器

sql MS SQL在DB中获取所有触发器