테이블 중 하나에 트리거를 쓰고 있습니다. 내가하고 싶은 일은 삽입 된 필드 중 하나를 사용하여 다른 테이블 열을 업데이트하고 싶습니다.트리거에 삽입 된 값 사용
CREATE TRIGGER [dbo].[Trigger_TestTrigger]
ON [dbo].[TableA]
FOR INSERT
AS
BEGIN
SET NoCount ON
DECLARE @variable UNIQUEIDENTIFIER
SELECT @variable = TableB.colA1 FROM TableB WHERE (TableB.colB1 = INSERTED.colA1)
IF (@variable != INSERTED.colA2)
BEGIN
UPDATE TableB SET colB4 = INSERTED.colA2 WHERE TableB.colB1 =INSERTED.colA1
END
END
그러나이 트리거를 데이터베이스에 생성하면 오류가 발생합니다. 오류 : 일반적으로 INSERTED
"INSERTED.colA1" could not be bound.
"INSERTED.colA2" could not be bound.
은 삽입 된 valuse 있습니다. 그래서, 내가 어떻게 테이블 "TableA"에 삽입 한 값을 가져야할까요? 이런 식으로 사용할 수 없다면 올바른 방법은 무엇입니까?
당신은
SELECT @variable = TableB.colA1
FROM TableB
inner join inserted ON TableB.colB1 = INSERTED.colA1
이 inserted
하나 개 이상의 행을 포함 할 수 있다는 것을 알고 있어야 다른 테이블처럼 삽입 처리해야합니다, 그래서 이것은 실제로 당신이 시간을 모두 원하는 결과를 제공하지 않습니다
그래서, 이것을하는 더 좋은 방법이 있습니까? 방금 삽입 한 값을 데이터베이스에 가져 오려면. 다른 테이블을 업데이트해야하기 때문에. 그리고 내 업데이트도 Inserted를 사용해야합니다. Intellisence는 거기에 삽입 된 필드도 제공하지 않습니다. :( –
INSERTED.colA2를 TableB.colA1에 삽입하고 비교하는 단일 UPDATE 쿼리가 있습니다. – podiluska