create trigger in_orders 
after insert on orders 
for each row 
insert into orders_log(
    id,
    item_id,
    amount,
    unit_price,
    total,
    description,
    ts,
    direction
)
values(
    NEW.id,
    NEW.item_id,
    NEW.amount,
    NEW.unit_price,
    NEW.total,
    NEW.description,
    NEW.ts,
    'in'
);

after delete on orders 
for each row 
insert into orders_log(
    id,
    item_id,
    amount,
    unit_price,
    total,
    description,
    ts,
    direction
)
values(
    OLD.id,
    OLD.item_id,
    OLD.amount,
    OLD.unit_price,
    OLD.total,
    OLD.description,
    OLD.ts,
    'out'
);

解释

  1. create trigger in_orders after insert on orders:定义一个名为 in_orders 的触发器,它会在 Orders 表上发生插入操作后触发。
  2. for each row:指定触发器的作用范围为每一行。
  3. insert into orders_log:将插入操作的新记录(NEW)信息插入到 orders_log 表中。
  4. values(NEW.id, ...):将新插入的记录的各字段值插入 orders_log 表中,并将 direction 字段设为 'in',表示这是一次插入操作。
  5. after delete on orders:定义当 Orders 表上发生删除操作时的触发器。
  6. values(OLD.id, ...):将删除操作的旧记录(OLD)信息插入到 orders_log 表中,并将 direction 字段设为 'out',表示这是一次删除操作。

本文由mdnice多平台发布


逼格高的汤圆
10 声望2 粉丝