Я работаю над триггером, который должен повторно вставить свои данные в другую таблицу.
Таблица назначения имеет первичный ключ INT NOT NULL БЕЗ идентификатора, поэтому у меня есть 2 варианта:
- Рассчитайте максимум и вставьте отсюда.
- Взять максимальное значение из таблицы последовательностей.
Я использую, чтобы всегда создавать табличную переменную с идентификатором и вставлять смещение от значения, вычисленного ранее.
CREATE TRIGGER trg
ON [dbo].[table]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @t TABLE (sec INT IDENTITY(1, 1), id INT)
DECLARE @ini INT
SELECT @ini = ISNULL(MAX(id), 0) FROM tableDest
-- SELECT @ini = value FROM sequencesTable WHERE seqId = 987
INSERT INTO @t (id) SELECT id FROM inserted
INSERT INTO tableDest
(id, field1, field2)
SELECT @ini + t.sec, field1, field2
FROM @t t
JOIN inserted ON t.id = inserted.id
-- SELECT @ini = @ini + MAX(t.sec) FROM @t
-- UPDATE sequencesTable SET value = @ini WHERE seqId = 987
END
Есть ли лучший способ сделать это?
Заранее спасибо.