在PostgreSQL中将默认值设置为null

17

我在这里读到,我应该能够像这样设置列的默认值:

ALTER [ COLUMN ] column SET DEFAULT expression

但是这个:

ALTER address.IsActive SET DEFAULT NULL

出现以下错误:

ERROR: syntax error at or near "address" LINE 1: ALTER address.IsActive SET DEFAULT NULL

我做错了什么?另外,如何指定多列的默认值为NULL


2
默认情况下,值为NULL,没有真正的理由将其默认设置为Null。 - xQbert
@xQbert 看起来至少phpPgAdmin的工作方式是这样的。谢谢! - user1382306
4个回答

25

正确的语法是:

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT NULL;

根据手册文档,您需要在几列上重复使用ALTER COLUMN部分:

ALTER TABLE table_name 
    ALTER COLUMN foo SET DEFAULT NULL,
    ALTER COLUMN bar SET DEFAULT 0;

谢谢。你如何针对多列名称执行此操作? - 1252748
2
@thomas - action [, ... ] 表示你可以添加任意数量的参数,用逗号分隔。 - Álvaro González

8

您没有运行完整的语句,缺少 ALTER TABLE 部分:

ALTER TABLE [ ONLY ] name [ * ]
    action [, ... ]
ALTER TABLE [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column TO new_column
ALTER TABLE name
    RENAME TO new_name

where action is one of:
[...]


4
尝试以下方式...它会起作用...
ALTER TABLE address ALTER COLUMN IsActive SET DEFAULT NULL

2
alter table dogs
alter column breed set default 'boxer'

alter table dogs
alter column breed set default null

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接