use*_*317 8 postgresql database-design datatypes ddl
如何为 DDL 中的列指定默认值?我很确定以下方法不久前有效:
CREATE TABLE test
(
col_1 CHAR(12) NOT NULL,
col_2 INTEGER NOT NULL WITH DEFAULT,
col_3 CHAR(12) NOT NULL WITH DEFAULT
);
Run Code Online (Sandbox Code Playgroud)
我只想定义 DB 应该使用列数据类型的默认值(就像我上面的例子一样),而不是具体指定哪个值。
Erw*_*ter 11
该默认的任何新的表列默认值是数据类型的默认值。
数据类型的默认默认值是NULL
- Postgres 中所有基本数据类型的情况。但是自定义类型或域允许任何有效值。
可以指定默认值,以防用户希望数据类型的列默认为空值以外的其他值。使用
DEFAULT
关键字指定默认值。(这种默认值可以被DEFAULT
附加到特定列的显式子句覆盖。)
默认表达式将用于任何未为列指定值的插入操作。如果为特定列定义了默认值,它将覆盖与域关联的任何默认值。反过来,域默认值会覆盖与基础数据类型关联的任何默认值。
您只能使用DEFAULT
列 in 子句CREATE TABLE
来指定不同的默认值。否则,你什么都不做。就像您在问题中显示的那样在 Postgres 中无效WITH DEFAULT
到复位列默认为默认的数据类型(通常默认NULL
),下降的列的指定的默认值。
Run Code Online (Sandbox Code Playgroud)ALTER [ COLUMN ] column_name DROP DEFAULT
NOT NULL
约束是相关的,但完全独立。定义NOT NULL
且没有自定义DEFAULT
(并且类型没有非空默认值)的列要求您为每个INSERT
.
旁白:您可能不想char(12)
在 Postgres 中使用数据类型。
您应该指定默认值。如果我没记错的话,DEFAULT 应该在 NOT NULL 之前:
CREATE TABLE test
( col_1 CHAR(12) NOT NULL,
col_2 INTEGER DEFAULT 0 NOT NULL,
col_3 CHAR(12) DEFAULT '' NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39470 次 |
最近记录: |