mysql 触发器计算总价,mysql’插入’触发器根据其他字段计算字段
我正在嘗試創建一個觸發器,它將根據用戶輸入的lat / lng列更新GEOMETRY列.我的觸發器看起來像這樣 –
CREATE TRIGGER `tbl.foo`
AFTER INSERT ON `tbl` FOR EACH ROW
BEGIN
UPDATE tbl
SET coord = Point(lng, lat)
WHERE id = NEW.id;
END
但是,當我插入一個帶有lng,lat值的新行時,我收到以下錯誤 –
ERROR 1442 (HY000): Can’t update table ‘tbl’ in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我可以不創建這樣的觸發器嗎?如果沒有,自動化的方法是什么?
解決方法:
嘗試使用BEFORE INSERT觸發器并修改所需的值,例如 –
CREATE TRIGGER trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
SET NEW.column1 = 'another value';
END
編輯
CREATE TABLE table_test_trigger (
id INT(11) NOT NULL AUTO_INCREMENT,
a INT(11) DEFAULT NULL,
b INT(11) DEFAULT NULL,
c INT(11) DEFAULT NULL,
PRIMARY KEY (id)
);
DELIMITER $$
CREATE TRIGGER trigger1
BEFORE INSERT
ON table_test_trigger
FOR EACH ROW
BEGIN
SET NEW.c = NEW.a + NEW.b;
END
$$
DELIMITER ;
INSERT INTO table_test_trigger(a, b) VALUES (10, 5);
SELECT * FROM table_test_trigger;
+----+------+------+------+
| id | a | b | c |
+----+------+------+------+
| 1 | 10 | 5 | 15 |
+----+------+------+------+
標簽:sql,mysql,triggers
來源: https://codeday.me/bug/20190826/1734299.html
總結
以上是生活随笔為你收集整理的mysql 触发器计算总价,mysql’插入’触发器根据其他字段计算字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抑郁的网名154个
- 下一篇: 感谢的锦旗用语大全428条