使用SQL Server触发器插入备份表并将原始链接链接到备份

时间:2019-05-29 16:31:52

标签: sql-server triggers

我正在尝试在SQL Server中实现以下逻辑:

每次将数据插入MainTable时,所有这些数据也应插入备份表MainTable_BACKUP中,插入MainTable的每一行都应具有外键{{1 }}指向BackupRecordId

可以使用触发器来实现吗?

MainTable_BACKUP

1 个答案:

答案 0 :(得分:3)

是的。

假设您在MainTable_BACKUP表上有一个名为BackupRecordId的标识列,则可以像这样创建一个插入后触发器

 Create Table MainTable
 (
    ID int IDENTITY(1, 1) PRIMARY KEY,
    Description NVARCHAR(50),
    BackupRecordId int
 )

 Create table MainTable_BACKUP
 (
    BackupRecordId int IDENTITY(1, 1) PRIMARY KEY,
    [Id] int,
    Description NVARCHAR(50)
 )

 CREATE TRIGGER TRG_MainTable
    ON MainTable
    AFTER INSERT AS
    BEGIN
        INSERT INTO MainTable_BACKUP([Id], Description) 
        SELECT [Id], Description FROM INSERTED

        UPDATE MainTable
        SET BackupRecordId = MP.BackupRecordId
        FROM MainTable
        INNER JOIN inserted i on i.Id = MainTable.Id
        INNER JOIN MainTable_BACKUP MP ON MP.Id = MainTable.Id
    END

您可以尝试以下操作:

insert into MainTable(Description) 
values ('Testing')

select * from MainTable
select * from MainTable_BACKUP