我遇到了这个问题。这是我做过的第一个触发器(对此非常新)。我认为这是格式化问题。我有一张名为filleradown的桌子。我需要每次插入一条记录来检查新行中B3_4_5的值是否为1.如果是,我需要它然后运行一个select来查找B3_4_5为0的最后一个条目。然后更新NEW .stoptime值为最后0条记录的“时间”值。
我认为我有所有部件,但似乎无法让它运行。请帮忙。
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 ;
我收到错误
答案 0 :(得分:0)
修好了。字面上错过了END语句。 捂脸
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;
END $$
DELIMITER ;