У меня есть следующие две таблицы:SQL триггер сервера: Дубликат запись
CREATE TABLE dbo.ExampleForTrig
(
var1 int NOT NULL,
var2 varchar(255) NOT NULL,
var3 varchar(255) NOT NULL,
var4 decimal(12,2) NOT NULL,
);
CREATE TABLE dbo.amended
(
var1 int NOT NULL,
var2 varchar(255) NOT NULL,
var3 varchar(255) NOT NULL,
var4 decimal(12,2) NOT NULL,
vara int NOT NULL,
varb varchar(255) NOT NULL,
varc varchar(255) NOT NULL,
vard decimal(12,2) NOT NULL,
);
С некоторой случайной информации в первом.
INSERT INTO dbo.ExampleForTrig (var1, var2, var3, var4)
VALUES ('9', 'Geoff', 'D', '11.23');
INSERT INTO dbo.ExampleForTrig (var1, var2, var3, var4)
VALUES ('9', 'Bill', 'E', '11.23');
INSERT INTO dbo.ExampleForTrig (var1, var2, var3, var4)
VALUES ('9', 'John', 'H', '11.23');
Первая таблица имеет AFTER UPDATE
триггер, который поступает в измененную информацию наряду с новой информацией в dbo.amended
таблице.
Однако в триггере есть проблема с дублирующимися записями.
Иногда для одного обновления триггер заполняет dbo.amended
двумя одинаковыми входами. Мне нужна помощь в определении ошибки.
CREATE TRIGGER dbo.my_trig
ON dbo.ExampleForTrig
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.amended (var1, var2, var3, var4, vara, varb, varc, vard)
SELECT
del.var1, del.var2, del.var3, del.var4,
ins.var1, ins.var2, ins.var3, ins.var4
FROM
(SELECT
var1, var2, var3, var4
FROM
deleted) AS del,
(SELECT
var1, var2, var3, var4
FROM
inserted) AS ins;
END;
Благодарим за помощь. Очень признателен. – AMorton1989