You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google BigQuery事务回滚后未删临时表:是Bug还是预期行为?

Google BigQuery事务回滚后临时表未被删除:预期行为而非Bug

这是Google BigQuery的预期行为,并非Bug。

BigQuery中的临时表(TEMPORARY TABLE)是绑定到当前会话的,而非单个事务。临时表的生命周期由会话控制,和事务的提交、回滚无关。事务回滚仅会撤销数据层面的修改操作(比如INSERT、UPDATE、DELETE),不会影响元数据层面的临时表创建——哪怕临时表是在事务内创建的,回滚后它依然会保留在当前会话中。

结合你提供的测试代码来看:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE `t4` (`i` INT64 );
ROLLBACK TRANSACTION; -- 事务中止,但临时表t4已在会话中创建

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE `t4` (`i` INT64 ); -- 会话中t4已存在,因此报错
COMMIT TRANSACTION;

第一次事务回滚后,临时表t4并未被清理,所以第二次创建同名临时表时会触发“表已存在”的报错。

如果需要在事务回滚后清理临时表,可以手动执行DROP TABLE IF EXISTS t4``语句来删除。

内容的提问来源于stack exchange,提问作者Niko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:37:58