讨论数据库 table 更改的触发器
Discuss the trigger for database table changes
嗨,
此触发器将为我提供包含所有更改的完整 table 记录,但我想获取最后更改的行共享代码。
Create Or Replace Trigger TRG_check IN
Before insert or update
on temp_checkin
FOR each ROW
BEGIN
INSERT INTO temp_checkin_history
select * from temp_checkin
where temp_checkin.id = temp_checkin.id;
END;
谢谢
在不指定列的情况下编写类似 INSERT INTO SELECT *
的查询是一种不好的做法。此外,不需要像您所做的那样从触发器所有者 table select。相反,使用 :NEW
关键字并指定所有列。您可以将触发器写为
CREATE OR REPLACE TRIGGER trg_check BEFORE
INSERT OR UPDATE ON temp_checkin
FOR EACH ROW
BEGIN
INSERT INTO temp_checkin_history (
id,
col1,
col2,
col3
) --other columns
VALUES (
:new.id,
:new.col1,
:new.col2,
:new.col3
); -- other columns prefixed by :NEW
END;
嗨, 此触发器将为我提供包含所有更改的完整 table 记录,但我想获取最后更改的行共享代码。
Create Or Replace Trigger TRG_check IN
Before insert or update
on temp_checkin
FOR each ROW
BEGIN
INSERT INTO temp_checkin_history
select * from temp_checkin
where temp_checkin.id = temp_checkin.id;
END;
谢谢
在不指定列的情况下编写类似 INSERT INTO SELECT *
的查询是一种不好的做法。此外,不需要像您所做的那样从触发器所有者 table select。相反,使用 :NEW
关键字并指定所有列。您可以将触发器写为
CREATE OR REPLACE TRIGGER trg_check BEFORE
INSERT OR UPDATE ON temp_checkin
FOR EACH ROW
BEGIN
INSERT INTO temp_checkin_history (
id,
col1,
col2,
col3
) --other columns
VALUES (
:new.id,
:new.col1,
:new.col2,
:new.col3
); -- other columns prefixed by :NEW
END;