MySQL-can';t修复错误代码1142-在触发器上插入更新行后
我试图创建的触发器将执行以下操作:在插入到收据('racun')表之后,我希望它更改最终价格(koncni_znesek),因为折扣.amount_percent('popust.kolicina_procenti')。但我一直收到错误代码1142,不幸的是,即使有很多在线文档,我似乎也无法修复 代码如下:MySQL-can';t修复错误代码1142-在触发器上插入更新行后,mysql,sql,triggers,Mysql,Sql,Triggers,我试图创建的触发器将执行以下操作:在插入到收据('racun')表之后,我希望它更改最终价格(koncni_znesek),因为折扣.amount_percent('popust.kolicina_procenti')。但我一直收到错误代码1142,不幸的是,即使有很多在线文档,我似乎也无法修复 代码如下: DELIMITER $$ CREATE TRIGGER cena_po_popustu AFTER INSERT ON RACUN FOR EACH ROW BEGIN SET SQ
DELIMITER $$
CREATE TRIGGER cena_po_popustu AFTER INSERT ON RACUN
FOR EACH ROW
BEGIN
SET SQL_SAFE_UPDATES = 0;
UPDATE
racun r
INNER JOIN
postavka p ON p.RACUN_ID = r.ID
INNER JOIN
sobe s ON s.ID = p.SOBE_ID
INNER JOIN
ponudba_prenocisce pp ON pp.ID = s.PONUDBA_PRENOCISCE_ID
INNER JOIN
popusti pop ON pop.ID = pp.POPUSTI_ID
SET
NEW.koncni_znesek = r.koncni_znesek - ((pop.kolicina_procenti / 100) * r.koncni_znesek);
SET SQL_SAFE_UPDATES = 1;
END$$
DELIMITER ;
我的收据(“racun”)表:
尝试
SET r.koncni_znesek=r.koncni_znesek-(…)
而不是SET NEW.koncni_znesek=r.koncni_znesek-(…)
我在尝试使用NEW之前就有过,但也不起作用。存储的函数或触发器无法修改(用于读或写)的表由调用函数或触发器的语句执行。
。看见
CREATE TABLE RACUN (
ID INT not null,
datum_cas DATETIME not null,
koncni_znesek INT not null,
GOSTI_ID INT not null
);
ALTER TABLE RACUN ADD CONSTRAINT PK_RACUN PRIMARY KEY(ID);
ALTER TABLE RACUN ADD CONSTRAINT FK_RACUN_GOSTI FOREIGN KEY(GOSTI_ID) REFERENCES GOSTI(ID);