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似乎是關於完全相同的問題,但唯一的答案是沒有幫助的問題本身
您是使用ISQL還是使用其他工具執行此操作?你可以嘗試升級到2.5.5,我記得一些錯誤在這個問題上得到了解決(在2.5.4我相信),但是我目前沒有時間去查看細節。您也可以嘗試使用WAIT事務而不是默認的NO WAIT。 –
這對我來說很好。 'Firebird 2.5.4'腳本在'IBExpert'中執行。 –
感謝你們倆。在FlameRobin中運行腳本。 然而,它不適用於EMS SQL Manager,這是我日常檢查的首選工具。我會聯繫他們。 乾杯! –