Postgres设置列默认值为空



如何在创建列时设置默认空值?表workflow_job_template_id是INTEGER类型,默认为空。

为什么其他表有DEFAULT NOT NULL却没有值?我希望新列不是NULL,而是默认值为空。

ALTER TABLE main_workflowjobnode 
ADD COLUMN "workflow_job_template_id" INTEGER NOT NULL DEFAULT='';
ERROR:  syntax error at or near "="
LINE 2: ...LUMN "workflow_job_template_id" INTEGER NOT NULL DEFAULT='';

表结构如下:

Table "public.main_workflowjobnode"
Column           |           Type           | Collation | Nullable |                     Default                      | Storage  | Stats target | Description
---------------------------+--------------------------+-----------+----------+--------------------------------------------------+----------+--------------+-------------
id                        | integer                  |           | not null | nextval('main_workflowjobnode_id_seq'::regclass) | plain    |              |
created                   | timestamp with time zone |           | not null |                                                  | plain    |              |
modified                  | timestamp with time zone |           | not null |                                                  | plain    |              |
job_id                    | integer                  |           |          |                                                  | plain    |              |
unified_job_template_id   | integer                  |           |          |                                                  | plain    |              |
workflow_job_id           | integer                  |           |          |                                                  | plain    |              |
char_prompts              | text                     |           | not null |                                                  | extended |              |
inventory_id              | integer                  |           |          |                                                  | plain    |              |
ancestor_artifacts        | text                     |           | not null |                                                  | extended |              |
extra_data                | text                     |           | not null |                                                  | extended |              |
survey_passwords          | text                     |           | not null |                                                  | extended |              |
do_not_run                | boolean                  |           | not null |                                                  | plain    |              |
all_parents_must_converge | boolean                  |           | not null |                                                  | plain    |              |
identifier                | character varying(512)   |           | not null |                                                  | extended |              |

尝试删除not null条件并将其默认设置为null

我建议只使用NULL值来表示"缺失"。在你的workflow_job_template_id列。NULL在语义上是"未知"的意思。在SQL语言。您当前尝试做的事情甚至是无效的:

ALTER TABLE main_workflowjobnode 
ADD COLUMN "workflow_job_template_id" INTEGER NOT NULL DEFAULT = '';

这是无效的,因为整数列不能存储字符串(包括空字符串)作为值。

最新更新