0
我一直有这个问题。当然,这是我所做过的第一个触发器(对此很新颖)。我认为这是一个格式问题。我有一张名为filleradown的表。我需要插入一条记录来检查新行中的B3_4_5的值是否为1.如果是我需要它然后运行select来查找B3_4_5是0的最后一个条目。然后更新NEW .stoptime值是最后0条记录的'时间'值。MYSQL触发器获取最后一行值并设置
我想我有所有的部分,但似乎无法让它运行。请帮忙。
DELIMITER $$
CREATE TRIGGER downinsert
BEFORE INSERT ON 'filleradown' FOR EACH ROW BEGIN
DECLARE downtime DATETIME;
IF (NEW.B3_4_5 = '1') THEN
SELECT time INTO downtime FROM filleradown WHERE B3_4_5 = 0 ORDER BY time DESC LIMIT 1;
SET NEW.stoptime = downtime;
END IF
$$
DELIMITER ;
更新:我在这里得到了更好的代码,但仍然出现一些错误。
DELIMITER $$
CREATE TRIGGER downinsert BEFORE INSERT ON filleradown
FOR EACH ROW
BEGIN
DECLARE dt DATETIME;
IF NEW.B3_4_5 = '1' THEN
SELECT MAX(time) INTO dt FROM filleradown WHERE filleradown.B3_4_5 = 0;
SET NEW.stoptime = dt;
END IF
$$
DELIMITER ;
我得到的错误
你得到什么错误?另外,你的'select'查询是不理想的。你希望像'SELECT MAX(time)AS downtime FROM filleradown WHERE B3_4_5 = 0'这样的东西,因为它摆脱了'LIMIT,OFFSET'开销。 –
@ N.B。更新了主帖。我一直在修改它 –
再次更新是缺少分隔符 –