【问题标题】:Discuss the trigger for database table changes讨论数据库表更改的触发器
【发布时间】:2018-12-25 22:14:48
【问题描述】:

你, 此触发器将为我提供包含所有更改的整个表记录,但我想获取最后更改的行共享代码。

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;

谢谢

【问题讨论】:

  • 检查你的拼写我的朋友!

标签: mysql database oracle triggers grant


【解决方案1】:

在不指定列的情况下编写类似INSERT INTO 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;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 2016-02-06
相关资源
最近更新 更多