我有一个大约125 000行的数据库,每行包含主键,一对int列和几个varchars。
我添加了一个int列,我试图在添加非null约束之前填充它。
db保存在脚本文件中。我在某处看到所有受影响的行在实际更新之前都被加载到内存中,这意味着每行都不会写入磁盘。整个数据库大约是20MB,这意味着加载它并且进行更新应该相当快,对吧?
所以,没有连接,没有嵌套查询,基本更新。 我尝试了多个数据库管理器,包括与hsql jar捆绑在一起的数据库管理器。
更新tbl1 set col1 = 1
查询永远不会完成执行。
答案 0 :(得分:1)
可能内存不足。
执行此操作的更简单方法是使用DEFAULT 1定义列,无论表的大小如何,都不会占用太多内存。您甚至可以同时添加非空约束
ALTER TABLE T ADD COLUMN C INT DEFAULT 1 NOT NULL