如何创建日期触发器?

Posted

技术标签:

【中文标题】如何创建日期触发器?【英文标题】:How to create date trigger? 【发布时间】:2021-06-28 02:54:50 【问题描述】:

如何创建触发器以将表中的日期数据与下一行一起增加?我试过了,在桌子下面

我想要做的是将日期从training_date_end 增加 1 周。但是我不知道怎么做,只是在学习。有人可以帮忙吗?

CREATE TABLE training 
(
    coach_id int NOT NULL,
    customer_id int NOT NULL,
    training_date_start date NULL,
    training_date_end date NULL,
    training_place_id int NOT NULL,
    CONSTRAINT training_pk PRIMARY KEY (training_place_id)
);

create or replace trigger lucky_week
before insert or update on training
for each row
begin
    update training
       set training_date_end = :new.training_date_end + 7
     where training_date_end = :new.training_date_end;
end;

【问题讨论】:

【参考方案1】:

很可能是这样的:

create or replace trigger lucky_week
  before insert or update on training
  for each row
begin
  :new.training_date_end := :new.training_date_end + 7;
end;

因为,您的触发器将遭受 mutating table 错误(如果您插入多行),并且 - 在这种情况下不会执行任何操作(因为您想要更新还不存在)。

【讨论】:

以上是关于如何创建日期触发器?的主要内容,如果未能解决你的问题,请参考以下文章

根据日期创建事件触发器

在 MySQL 中使用带有日期的连接字符串创建触发器

创建日期和上次修改日期触发器

iOS 10:如何在特定日期触发后重复本地通知?

如何创建和使用自定义 DataGridRow 触发器

如何使用 Postgres 和 GraphQL 在特定日期自动触发事件?