SQL SERVER 触发器

由于 Sql Server 中没有行触发器,可以采用如下方法来代替:

USE [University]
GO
/****** Object:  Trigger [dbo].[T_Student]    Script Date: 10/17/2018 17:58:24 ******/
CREATE TRIGGER [dbo].[T_Student]  
ON [dbo].[Student]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
    --INSERT
    IF(EXISTS(SELECT 1 FROM INSERTED) AND NOT EXISTS(SELECT 1 FROM DELETED))
    BEGIN 
        INSERT INTO [University].[DBO].[SYNCHRONIZETASK]([TABLENAME],[TYPE],[PRIMARYKEY])
        SELECT '[University].[DBO].[Student]', 1, StudentID FROM INSERTED
    END
    --DELETE
    IF(NOT EXISTS(SELECT 1 FROM INSERTED) AND EXISTS(SELECT 1 FROM DELETED))
    BEGIN
        INSERT INTO [University].[DBO].[SYNCHRONIZETASK]([TABLENAME],[TYPE],[PRIMARYKEY])
        SELECT '[University].[DBO].[Student]', 2, StudentID FROM DELETED
    END
    --UPDATE
    IF(EXISTS(SELECT 1 FROM INSERTED) AND EXISTS(SELECT 1 FROM DELETED))
    BEGIN
        INSERT INTO [University].[DBO].[SYNCHRONIZETASK]([TABLENAME],[TYPE],[PRIMARYKEY])
        SELECT '[University].[DBO].[Student]', 3, StudentID FROM INSERTED
    END
END

 说明:

1. 数据库名:University,数据库表名:Student

2.SYNCHRONIZETASK 表用来记录源数据哪些记录发生了更改,这样同步没有修改时间字段的表的数据会比较方便

 (其字段如下:[TableName], [Type] ,[PrimaryKey]

原文地址:https://www.cnblogs.com/hellowzl/p/9805889.html