我在liquibase变更集中写了一个sql标签。这个sql代码假设在名为" Purchase"的表中进行数据迁移。所以我有以下sql查询:
UPDATE purchase
SET location_id = (SELECT location_id FROM shop WHERE shop.id = purchase.shop_id);
然后,
ALTER TABLE purchase DROP COLUMN shop_id;
但我在尝试执行第二个查询时遇到以下错误,该第二个查询应该删除列' shop_id'在表格购买
ERROR: cannot ALTER TABLE because it has pending trigger events
请问这个错误是什么时候抛出来的,我该如何解决呢。
在我的liquibase changese中,我的sql标签写成如下
<sql>
UPDATE purchase
SET location_id = (SELECT location_id FROM shop WHERE shop.id = purchase.shop_id);
ALTER TABLE purchase DROP COLUMN shop_id;
</sql
请有人帮帮我吗?提前感谢您的帮助
答案 0 :(得分:3)
听起来你需要在alter和update之间提交你的更改。
试试这个:
UPDATE purchase
SET location_id = (SELECT location_id FROM shop WHERE shop.id = purchase.shop_id);
COMMIT;
BEGIN;
ALTER TABLE purchase DROP COLUMN shop_id;
&#34; BEGIN;&#34;是可选的,但听起来你的框架正在使用一个事务,所以我将其包含在内并进行测试以确保实际更改&#34;采取&#34;。