错误:无法ALTER TABLE,因为它在尝试删除表中的列时具有挂起的触发事件

时间:2015-04-24 18:14:31

标签: sql postgresql liquibase

我在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

请有人帮帮我吗?提前感谢您的帮助

1 个答案:

答案 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;。