Mysql

觸發器 - 如果時間間隔?

  • March 19, 2022

我希望使用 mysql 觸發器,根據 CURTIME() 是否在 08:01 和 11:59 之間,將名為 peak 的列更新為 0 或 1。

任何人都可以幫助這個觸發器嗎?

作為觸發器的替代方案,如果時間僅基於列值(例如預設為 CURTIME 的時間),則可以使用生成的表達式:

create table dt (
 t time,
 peak bool generated always as (t between '08:01' and '11:59')
);

插入後:

insert 
into dt(t) values ('8:00'),('8:01'), ('8:02'),('11:58'),('11:59'),('12:00');

結果是:

select * from dt;

| t        | peak |
| -------- | ---- |
| 08:00:00 | 0    |
| 08:01:00 | 1    |
| 08:02:00 | 1    |
| 11:58:00 | 1    |
| 11:59:00 | 1    |
| 12:00:00 | 0    |

像普通列一樣,峰值可以出現在索引中。

你需要這樣的東西:

BEGIN
 IF CURTIME() BETWEEN '08:00:00' AND '11:59:59'
   THEN UPDATE ...
 END IF
END

每次事件發生時都會啟動此觸發器,但僅噹噹前時間在給定範圍內時才會執行某些操作,否則不會執行任何操作。

引用自:https://dba.stackexchange.com/questions/217688