되어 다음 컬럼 :동일한 테이블의 UPDATE 트리거에서 테이블의 열을 업데이트하는 방법은 무엇입니까? 내 테이블 <code>Table1</code>에서
Id(identity), Field1(VARCHAR), Field2(VARCHAR), Field3(CHAR)
내가이 테이블의 Field1
의 UPDATE에 트리거가 : 그래서
CREATE TRIGGER [dbo].[My_TRG] ON [dbo].[Table1]
FOR UPDATE
NOT FOR REPLICATION
AS
DECLARE @Id INT...
.....
.....
BEGIN
.....
SELECT @Id = Id FROM Inserted
UPDATE [Table1] SET [Field3] = 'NEW' WHERE [Field3] IS NULL AND [email protected]
.....
.....
END
, I는 같은 레코드에 대해 동일한 테이블의 다른 열을 업데이트하고있다 UPDATE 트리거에서 업데이트됩니다. 위의 트리거에서 @Id
은 업데이트되는 레코드의 식별자입니다.
UPDATE 문이 이전에 없었으므로 트리거가 정상적으로 작동했습니다. 이제 트리거에서 UPDATE 문을 추가해야합니다.
그것은 다음과 같은 예외가 발생합니다 :
행을 업데이트하기위한 찾을 수 없습니다. 마지막으로 읽은 이후에 일부 값이 변경되었을 수 있습니다.
Field3
에 대한 기본값을 설정할 수 없습니다. Field3
은 값이 Field1
인 경우에만 설정해야합니다. 그렇지 않은 경우 null
이어야합니다.
어떻게해야합니까?
기본값을 추가하려고합니까? 그런 다음 기본값을 사용하십시오! https://www.w3schools.com/sql/sql_default.asp –
트리거는 * 행당 한 번 * 실행되지 않고 명령문 * 당 한 번 실행됩니다. 즉, 업데이트 된 0, 1 또는 * multiple * 행을 처리 할 수있는 코드를 작성해야합니다. (현재의 문제와 관련이 없지만 염두에 두어야 할 가치가 있음) –
그건 방아쇠가하는 것이 아닙니다. 어쨌든 ... 왜 계산 된 열을 사용하지 않으시겠습니까? –