无法删除在同一脚本中创建的 table

Cannot drop table created within same script

我有一个脚本,我在其中创建了一个临时 table,随后我想删除它。

我简单地创建了 table,使用 INSERT INTO 语句填充它,但是当要删除它时,脚本失败说明 table 正在使用中。

看了一下好像是事务管理引起的,但是有点疑惑。

这是一个重现问题的小脚本:

CREATE TABLE SCRIPT_TEMP (
  NAME VARCHAR(100) NOT NULL,
  USERNAME VARCHAR(150) NOT NULL);
COMMIT WORK;

INSERT INTO SCRIPT_TEMP (NAME, USERNAME)
SELECT NAME, COALESCE(USERNAME, 'empty')
FROM SALESREPS;
COMMIT WORK;

DROP TABLE SCRIPT_TEMP;
COMMIT WORK;

或者,为了让没有 SALESREPS table 的任何人都能轻松测试 table,请使用此插入语句 :o)

INSERT INTO SCRIPT_TEMP (NAME, USERNAME)
SELECT 'Name 1', 'Username 1'
FROM RDB$DATABASE;
COMMIT WORK;

我没看到什么仍然持有对 SCRIPT_TEMP table 的引用,直到进行 drop 调用。为什么即使在第二次 COMMIT 之后,脚本自己的事务也会阻止它?

如果我将执行分成 2 个脚本,一切都很好。

我错过了什么??

谢谢!!

PS:使用 Firebird 2.5.2,以防万一

PPS:我的脚本比这复杂一点。 temp table 充满了 table 名称和需要操作的相关约束,但这不是问题,该部分运行良好。事实上,我想解决的问题很容易通过此处的代码示例重现,这是我在调试时遇到的。 This SO question 似乎是关于完全相同的问题,但唯一的答案对问题本身没有帮助

感谢 Val Marinov 为我指明了正确的方向。

看来我的问题是由于我的 SQL 经理 - 一定有一个我不知道的设置。

脚本在 FlameRobin 中按预期运行。