我在插入触发器上有一个表顺序,但是在ordernumber表中我想根据serialnumber更新ordernumber
所以对于更新,我写了两行
第1行:UPDATE TEMPSTORAGE SET
ORDERNUMBER =orderno+1,
SERIALNUMBER =serialno;
在没有条件的情况下工作正常
第2行:UPDATE ORDERNUMBER SET
ORDERNUMBER =orderno+1 WHERE
SERIALNUMBER = serialno;
没有工作可以任何机构建议我....如何更新ordernumber基于
序列号
DELIMITER $$
USE `temp`$$
DROP TRIGGER /*!50032 IF EXISTS */ `trg_updateordernumber`$$
CREATE TRIGGER `trg_updateordernumber` AFTER INSERT ON `ORDERLINES`
FOR EACH ROW BEGIN
DECLARE orderno VARCHAR(255);
DECLARE serialno VARCHAR(255);
SET @orderno = 'xxx';
SELECT ORDERNUMBER, SERIALNUMBER INTO orderno, serialno
FROM ORDERLINES
WHERE ID=NEW.ID;
UPDATE TEMPSTORAGE SET
`ORDERNUMBER` =orderno+1,
`SERIALNUMBER` =serialno;
UPDATE ORDERNUMBER SET
`ORDERNUMBER`=orderno+1
WHERE `SERIALNUMBER` = serialno;
END;
$$
DELIMITER ;
mysql触发器有什么问题(希望不是)....? 如果不是那么plz建议我为什么line2不工作?
谢谢和问候;
答案 0 :(得分:1)
您需要BEFORE INSERT
触发器,但不需要AFTER INSERT
。
我不确定ORDERLINES
和ORDERNUMBER
表之间的关系,
但建议尝试以下(未测试):
DELIMITER $$
USE `temp`$$
DROP TRIGGER /*!50032 IF EXISTS */ `trg_updateordernumber`$$
CREATE TRIGGER `trg_updateordernumber` BEFORE INSERT ON `ORDERLINES`
FOR EACH ROW BEGIN
UPDATE TEMPSTORAGE SET
`ORDERNUMBER` =NEW.ORDERNUMBER+1,
`SERIALNUMBER` =NEW.SERIALNUMBER;
UPDATE ORDERNUMBER SET
`ORDERNUMBER`==NEW.ORDERNUMBER+1
WHERE `SERIALNUMBER` = NEW.SERIALNUMBER;
END;
$$
DELIMITER ;