错误:无法更改表,因为在尝试删除表中的列时有待处理的触发事件

bla*_*iso 3 sql postgresql liquibase

我在 liquibase 变更集中编写了一个 sql 标签。该sql代码假设在名为“Purchase”的表中进行数据迁移。所以我有以下sql查询:

UPDATE purchase
SET location_id = (SELECT location_id FROM shop WHERE shop.id = purchase.shop_id);
Run Code Online (Sandbox Code Playgroud)

然后,

ALTER TABLE purchase DROP COLUMN shop_id;
Run Code Online (Sandbox Code Playgroud)

但在尝试执行第二个查询时出现以下错误,该查询应该删除表中的“shop_id”列

ERROR: cannot ALTER TABLE  because it has pending trigger events
Run Code Online (Sandbox Code Playgroud)

请问这个错误是何时抛出的,我该如何解决它。

在我的liquibasechangese中,我的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
Run Code Online (Sandbox Code Playgroud)

请问有人可以帮助我吗?在此先感谢您的帮助

Joe*_*ove 7

听起来您需要在更改和更新之间提交更改。

尝试这个:

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;
Run Code Online (Sandbox Code Playgroud)

“开始”;是可选的,但听起来您的框架正在使用事务,因此我将包含它并进行测试以确保更改实际上“进行”。