Postgresql
如何使用數據類型的預設值作為列預設值?
如何為 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 );
我只想定義數據庫應該使用列數據類型的預設值(如我上面的範例),而不指定確切的值。
任何新表列的預設預設值都是數據類型的預設值。
數據類型的預設預設值是
NULL
- 這是Postgres中*所有基本數據類型的情況。*但是自定義類型或域允許任何有效值。可以指定預設值,以防使用者希望數據類型的列預設為空值以外的值。
DEFAULT
使用關鍵字指定預設值。(這樣的預設值可以被DEFAULT
附加到特定列的顯式子句覆蓋。)預設表達式將用於未指定列值的任何插入操作。如果為特定列定義了預設值,它將覆蓋與域關聯的任何預設值。反過來,域預設值會覆蓋與基礎數據類型關聯的任何預設值。
您僅使用
DEFAULT
in 列的子句CREATE TABLE
來指定不同的預設值。否則,你什麼都不做。WITH DEFAULT
就像您在問題中顯示的那樣在 Postgres 中無效要將列預設值重置為數據類型的預設預設值(通常為
NULL
),請刪除該列的指定預設值。ALTER [ COLUMN ] column_name DROP DEFAULT
NOT NULL
約束是相關但完全獨立的。已定義NOT NULL
且沒有自定義DEFAULT
(並且該類型沒有非空預設值)的列要求您為每個INSERT
.另外:您可能不想
char(12)
在 Postgres 中使用數據類型。