我正在尝试在SQL Server中实现以下逻辑:
每次将数据插入MainTable
时,所有这些数据也应插入备份表MainTable_BACKUP
中,插入MainTable
的每一行都应具有外键{{1 }}指向BackupRecordId
。
可以使用触发器来实现吗?
MainTable_BACKUP
答案 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