由于 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])