如何设置所有列? PostgreSQL 中的默认值等于 null

发布于 2024-10-20 03:18:10 字数 270 浏览 6 评论 0原文

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

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

I would like to set the default value for every column in a number of tables equal to Null. I can view the default constraint under information_schema.columns.column_default. When I try to run
update information_schema.columns set column_default = Null where table_name = '[table]'
it throws "ERROR: cannot update a view HINT: You need an unconditional ON UPDATE DO INSTEAD rule."

What is the best way to go about this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

好倦 2024-10-27 03:18:10

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

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

SELECT 'ALTER TABLE '||table_name||' ALTER COLUMN '||column_name||' SET DEFAULT NULL;'
FROM information_schema.columns
WHERE table_name = 'foo';

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

You need to run an ALTER TABLE statement for each column. Never ever try to do something like that by manipulating system tables (even if you find the correct one - INFORMATION_SCHEMA only contains view to the real system tables)

But you can generate all needed ALTER TABLE statements based on the data in the information_schema views:

SELECT 'ALTER TABLE '||table_name||' ALTER COLUMN '||column_name||' SET DEFAULT NULL;'
FROM information_schema.columns
WHERE table_name = 'foo';

Save the output as a SQL script and then run that script (don't forget to commit the changes)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文