触发特定字段变化的触发器 Firebird 3.0
A trigger that triggers a change in a specific field Firebird 3.0
SET TERM ^ ;
CREATE TRIGGER ADDPWDHASHHISTORY FOR USERS ACTIVE
AFTER INSERT OR UPDATE POSITION 3
AS
BEGIN
INSERT INTO USERSPWDHASHHISTORY
(id,
USERID,
FIO,
PWDHASH,
ATTIME)
values (gen_id(GEN_PWDHASHHIS_ID,1) , new.id, new.fio, new.pwdhash, CURRENT_TIMESTAMP);
END^
SET TERM ; ^
触发此触发器以更改 USERS table 中的任何字段。我需要更改它,以便仅在更改 PWDNASH 字段时触发。请帮忙
插入或更新触发器将触发 table 上的任何插入或更新。如果你想在特定字段上有条件行为,你需要在触发器主体中这样做。
在这种情况下,您需要执行以下操作:
SET TERM ^ ;
CREATE TRIGGER ADDPWDHASHHISTORY FOR USERS ACTIVE
AFTER INSERT OR UPDATE POSITION 3
AS
BEGIN
if (inserting or new.PWDHASH is distinct from old.PWDHASH) then
INSERT INTO USERSPWDHASHHISTORY
(id,
USERID,
FIO,
PWDHASH,
ATTIME)
values (gen_id(GEN_PWDHASHHIS_ID,1) , new.id, new.fio, new.pwdhash, CURRENT_TIMESTAMP);
END^
SET TERM ; ^
也就是说,当为插入触发触发器时,inserting
条件将为真,而 new.PWDHASH is distinct from old.PWDHASH
检查值是否已在更新中更改。您也可以使用条件 inserting or updating and new.PWDHASH is distinct from old.PWDHASH
,但这并不是必需的,所以我选择了较短的版本。
另请参阅:
SET TERM ^ ;
CREATE TRIGGER ADDPWDHASHHISTORY FOR USERS ACTIVE
AFTER INSERT OR UPDATE POSITION 3
AS
BEGIN
INSERT INTO USERSPWDHASHHISTORY
(id,
USERID,
FIO,
PWDHASH,
ATTIME)
values (gen_id(GEN_PWDHASHHIS_ID,1) , new.id, new.fio, new.pwdhash, CURRENT_TIMESTAMP);
END^
SET TERM ; ^
触发此触发器以更改 USERS table 中的任何字段。我需要更改它,以便仅在更改 PWDNASH 字段时触发。请帮忙
插入或更新触发器将触发 table 上的任何插入或更新。如果你想在特定字段上有条件行为,你需要在触发器主体中这样做。
在这种情况下,您需要执行以下操作:
SET TERM ^ ;
CREATE TRIGGER ADDPWDHASHHISTORY FOR USERS ACTIVE
AFTER INSERT OR UPDATE POSITION 3
AS
BEGIN
if (inserting or new.PWDHASH is distinct from old.PWDHASH) then
INSERT INTO USERSPWDHASHHISTORY
(id,
USERID,
FIO,
PWDHASH,
ATTIME)
values (gen_id(GEN_PWDHASHHIS_ID,1) , new.id, new.fio, new.pwdhash, CURRENT_TIMESTAMP);
END^
SET TERM ; ^
也就是说,当为插入触发触发器时,inserting
条件将为真,而 new.PWDHASH is distinct from old.PWDHASH
检查值是否已在更新中更改。您也可以使用条件 inserting or updating and new.PWDHASH is distinct from old.PWDHASH
,但这并不是必需的,所以我选择了较短的版本。
另请参阅: