업데이트를 수행 한 후에 실행되는 트리거를 쓰려고합니다. 트리거가 업데이트 된 마지막 행을 업데이트하고 ACTION_TYPE이라는 필드를 "changed"문자열로 채 웁니다.업데이트 후 SQL 트리거 값이있는 필드 업데이트
표 구조
USE BillingUI;
CREATE TABLE tbl8_update_transactions
(
TID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE nchar(8) NOT NULL,
FIELD_DESCRIPTION nVARchar(43) NULL,
ACTION_TYPE nchar(6) NULL,
HID int,
FOREIGN KEY (HID) REFERENCES HOLIDAY_DATE_TABLE (HID) ON DELETE CASCADE
);
트리거
CREATE TRIGGER tbl8_ins
ON tbl8_update_transactions
AFTER UPDATE
AS
BEGIN
UPDATE tbl8_update_transactions
SET ACTION_TYPE = "change"
WHERE TID = inserted.TID;
END
나는 다음과 같은 오류를 얻을 :
잘못된 열 이름 "변화". - 변경 이유가 열 이름이라고 생각하는 이유를 모르겠습니다.
다중 부분 식별자 "inserted.TID"를 바인딩 할 수 없습니다. - 나는이 중 하나의 구문에 대해 확신이 없으며, 방금 업데이트 된 행에서 업데이트를 수행하려고합니다.
방아쇠 방아쇠는 ** 행당 한 번 ** ** ** ** 사례가 아닌 것으로 간주됩니다. 트리거는 ** 명령문 ** 당 한 번 실행됩니다. 따라서 UPDATE 문이 25 개의 행에 영향을 주면 트리거가 ** 한번 ** 발생하지만 Inserted와 Deleted는 각각 25 개의 행을 포함합니다 . 다음 중 25 개의 행 중에서 코드가 여기에서 선택됩니다 : '.... WHERE TID = inserted.TID' - 비 결정적입니다. 이것을 고려하려면 트리거를 다시 작성해야합니다! –