2015-11-19 42 views
1

我有一個腳本,我在其中創建了一個臨時表格,隨後我想刪除它。不能刪除在同一個腳本中創建的表格

我只是創建表,使用INSERT INTO語句填充它,但是當涉及到刪除它時,腳本將失敗,指出表正在使用中。

從閱讀這裏看起來似乎是交易管理造成的,但我有點困惑。

這裏是再現這一問題的小腳本:爲了

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表,使用插入語句:O)

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

我沒有看到拖放調用時仍然存在對SCRIPT_TEMP表的引用。爲什麼腳本自己的事務會在第二次COMMIT之後封鎖它?

如果我在2個腳本中分割執行,一切都很好。

我在想什麼?

謝謝!

PS:使用火鳥2.5.2,在重要

PPS情況:我的劇本是比這更復雜一些。臨時表充滿了需要操縱的表名和相關約束,但這不是問題,該部分運行良好。事實是,我想要解決的問題很容易在代碼示例中重現,這是我在調試時得到的。 This SO question似乎是關於完全相同的問題,但唯一的答案是沒有幫助的問題本身

+0

您是使用ISQL還是使用其他工具執行此操作?你可以嘗試升級到2.5.5,我記得一些錯誤在這個問題上得到了解決(在2.5.4我相信),但是我目前沒有時間去查看細節。您也可以嘗試使用WAIT事務而不是默認的NO WAIT。 –

+0

這對我來說很好。 'Firebird 2.5.4'腳本在'IBExpert'中執行。 –

+0

感謝你們倆。在FlameRobin中運行腳本。 然而,它不適用於EMS SQL Manager,這是我日常檢查的首選工具。我會聯繫他們。 乾杯! –

回答

1

感謝Val Marinov指向我在正確的方向。

看來我的問題是由於我的SQL管理器 - 必須有一個我不知道的設置。

腳本按預期在FlameRobin中運行。

相關問題