내가 다른 테이블에 데이터를 다시 삽입 할 필요가있는 트리거에서 일하고 있어요 삽입 TSQL에 트리거합니다.가 아닌 정체성 테이블
대상 테이블은 정체성없이 NOT NULL 기본 키의 INT를 가지고, 그래서 나는이 개 선택이 있습니다
- 최대를 계산하고 여기에서 삽입을.
- 시퀀스 테이블에서 최대 값을 가져옵니다.
항상 ID로 테이블 변수를 만들고 이전에 계산 된 값에서 삽입하는 데 사용합니다.
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
더 좋은 방법이 있나요?
미리 감사드립니다.
다른 테이블에있는 int PK의 의도와 의미가 무엇인지 결정해야합니다. 이것이 올바른 키 값을 제공 할 수있는 유일한 방법입니다. – RBarryYoung