Postgresql

如何使用數據類型的預設值作為列預設值?

  • August 14, 2021

如何為 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中*所有基本數據類型的情況。*但是自定義類型或域允許任何有效值。

手冊CREATE TYPE

可以指定預設值,以防使用者希望數據類型的列預設為空值以外的值。DEFAULT使用關鍵字指定預設值。(這樣的預設值可以被DEFAULT附加到特定列的顯式子句覆蓋。)

手冊CREATE DOMAIN

預設表達式將用於未指定列值的任何插入操作。如果為特定列定義了預設值,它將覆蓋與域關聯的任何預設值。反過來,域預設值會覆蓋與基礎數據類型關聯的任何預設值。

您僅使用DEFAULTin 列的子句CREATE TABLE來指定不同的預設值。否則,你什麼都不做WITH DEFAULT就像您在問題中顯示的那樣在 Postgres 中無效

要將列預設值重置為數據類型的預設預設值(通常為NULL),請刪除該列的指定預設值。

手冊ALTER TABLE

ALTER [ COLUMN ] column_name DROP DEFAULT

NOT NULL約束是相關但完全獨立的。已定義NOT NULL且沒有自定義DEFAULT(並且該類型沒有非空預設值)的列要求您為每個INSERT.


另外:您可能不想char(12)在 Postgres 中使用數據類型。

引用自:https://dba.stackexchange.com/questions/212249