我想为多个表中的每个列设置默认值,等于Null。我可以在information_schema.columns.column_default下查看默认约束。当我试图跑
update information_schema.columns set column_default = Null where table_name = '[table]'
它抛出“错误:无法更新视图提示:您需要一个无条件的ON UPDATE DO INSTEAD规则。”
最好的方法是什么?
答案 0 :(得分:1)
您需要为每列运行ALTER TABLE
语句。永远不要试图通过操作系统表来做类似的事情(即使你找到了正确的一个 - INFORMATION_SCHEMA只包含真实系统表的视图)
但您可以根据information_schema视图中的数据生成所有必需的ALTER TABLE
语句:
SELECT 'ALTER TABLE '||table_name||' ALTER COLUMN '||column_name||' SET DEFAULT NULL;' FROM information_schema.columns WHERE table_name = 'foo';
将输出保存为SQL脚本,然后运行该脚本(不要忘记提交更改)