Mysql
觸發器 - 如果時間間隔?
我希望使用 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
每次事件發生時都會啟動此觸發器,但僅噹噹前時間在給定範圍內時才會執行某些操作,否則不會執行任何操作。