我的系统产品表和库存表中有2个表。
我在stock表中有一个触发器来更新产品表,如下所示:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomRightRadius="10dp"
android:topRightRadius="10dp" />
<solid android:color="@android:color/black" />
</shape>
现在,当我尝试执行此操作时,我收到错误
CREATE TRIGGER `Stock_Delete_Update_Products` AFTER DELETE ON
`netshop_stock` FOR EACH ROW BEGIN UPDATE products SET
products_last_modified = NOW( ) WHERE products_model = old.product_model;
我理解select查询会锁定product表,从而阻碍了触发器。有没有办法阻止select语句的锁定?
答案 0 :(得分:0)
错误消息不言自明,并说触发器不能用于修改调用该触发器的表。可能有效的一个技巧是将products
表包装在子查询中。 MySQL实现了子查询,这可能会解决问题。
DELETE FROM netshop_stock
WHERE netshop_stock.product_model IN
(
SELECT DISTINCT p.products_model
FROM (SELECT * FROM products) p
WHERE p.products_esd = 1
)