【发布时间】:2015-12-01 22:58:04
【问题描述】:
我有两张桌子
表一:default_sellers_commissions有:
id
value - INT
表二:marketplace_saleperpartner有:
id
userID
commission - INT default '0.00'
commission_id
我需要的是在表marketplace_saleperpartner 中插入新行后,使用default_sellers_commissions.value 中的值更新marketplace_saleperpartner.commission 值,其中marketplace_saleperpartner.commission_id = default_sellers_commissions.id
所以我创建了一个触发器:
CREATE TRIGGER `marketplacedefaultcommission`
AFTER INSERT ON `marketplace_saleperpartner`
FOR EACH ROW
UPDATE marketplace_saleperpartner
SET `marketplace_saleperpartner`.`commision` = `default_sellers_commissions`.`value`
WHERE `marketplace_saleperpartner`.`comm_id` = `default_sellers_commissions`.`id`
AND `marketplace_saleperpartner`.`commision`='0.00';
附注:
出于某种原因,我需要 marketplace_saleperpartner.commision 第一次插入 value='0.00'
现在我在尝试向表 marketplace_saleperpartner 插入新行时遇到此错误
MySql Error: Can't update table in stored function/trigger because it is already used by statement which invoked this stored function/trigger
有什么帮助吗?
【问题讨论】:
-
插入语句是什么样的?您不能修改
AFTER触发器中的任何表行值。如果您确实需要创建佣金值为 0 的行,那么您需要执行 2 次插入,因为您无法使用触发器在同一个表中插入行。您可以将佣金值设置为不同表格中的值。这就是你想要做的吗? -
@JRD 是的,这就是我需要的,将佣金值设置为不同表中的值。