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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值