2012-08-05 25 views
0

我有一個數據庫約125000行,每行有主鍵,幾列int列和幾個varchars。
我已經添加了一個int列,我試圖在添加非null約束之前填充它。HSQL簡單的一列更新永遠運行

數據庫被保存在腳本文件中。我讀過一些地方,在實際更新之前,所有受影響的行都會加載到內存中,這意味着不會是每行的磁盤寫入。整個數據庫大約20MB,這意味着加載它,做更新應該是相當快的,對吧?

所以,沒有連接,沒有嵌套查詢,基本更新。 我已經嘗試了多個數據庫管理器,包括與hsql jar捆綁在一起的數據庫管理器。

更新TBL1設置COL1 = 1

查詢從未完成執行。

回答

1

它可能是內存不足。

執行此操作的更簡單的方法是使用DEFAULT 1定義列,不管表的大小如何,該列都不佔用大量內存。你甚至可以在同一時間

ALTER TABLE T ADD COLUMN C INT DEFAULT 1 NOT NULL 
+0

結束了做這個,之後下探默認添加NOT NULL約束。謝謝。 – cbaby 2012-08-05 17:06:29