1

我想将多个表中的每一列的默认值设置为 Null。我可以在 information_schema.columns.column_default 下查看默认约束。当我尝试运行 update information_schema.columns set column_default = Null where table_name = '[table]' 它时会抛出“错误:无法更新视图提示:您需要一个无条件的 ON UPDATE DO INSTEAD 规则。”

解决此问题的最佳方法是什么?

4

1 回答 1

1

您需要ALTER TABLE为每一列运行一个语句。永远不要尝试通过操作系统表来做类似的事情(即使你找到了正确的——INFORMATION_SCHEMA 只包含对真实系统表的视图)

但是您可以ALTER TABLE根据 information_schema 视图中的数据生成所有需要的语句:

SELECT 'ALTER TABLE '||table_name||' ALTER COLUMN '||column_name||' 设置默认空;'
FROM information_schema.columns
WHERE table_name = 'foo';

将输出保存为 SQL 脚本,然后运行该脚本(不要忘记提交更改)

于 2011-03-02T17:30:59.697 回答