sql - 错误 : cannot ALTER TABLE because it has pending trigger events while attempting to drop a column in a table

标签 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;

但是我在尝试执行第二个查询时遇到以下错误,该查询应该删除表 Purchase 中的“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

有人可以帮帮我吗?预先感谢您的帮助

最佳答案

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

试试这个:

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;

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

关于sql - 错误 : cannot ALTER TABLE because it has pending trigger events while attempting to drop a column in a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854664/

相关文章:

mysql - 搜索最佳解决方案以使其( select * from table order by rand() limit 40 )运行得更快

sql - PostgreSQL 中 50M+ 行表的聚合查询

mysql - Liquibase & MySQL 5.7 时间戳列修改问题

java - Liquibase 与 Tapestry 和 Hibernate 集成 : initial schema creation step

Liquibase 包含上下文

php - SQL 查询 - 比较值以显示可用性

c# - Umbraco 在 xslt 中发布日期

php - CakePHP:如何包含所有顶级关联

python - SqlAlchemy 1.4 抛出 InternalServerError(缓存查找失败,类型 3912040)

sql - 使用sql批量插入特定值