[英]Adding a column to existing PostgreSQL table with constraint and default value
[英]Adding new column to existing table with default value
假設我有一個名為SerialNumbers
的表,該表具有以下列:
(int)
(nvarchar)
(bit)
(DateTime)
當前,該表被許多不同的應用程序使用。 現在,我們需要添加一個名為CurrentlyAt (int)
的新列,該列將始終具有默認值1
。 我繼續並添加了默認值1
的列。
所以我的問題是,我現在是否必須更改所有以前的insert
查詢以包括新列,或者如果不將其添加到舊的insert
語句中,則默認情況下會添加一個值?
答案當然取決於它。
只要您現有的INSERT
語句具有顯式的列列表,就無需對其進行編輯,並且默認情況下將插入默認值。
INSERT INTO SerialNumbers (
Id,
SerialNumber,
IsValid,
ToBeUsedBy)
SELECT....
但是,如果您有任何沒有列列表的插入,它們將引發錯誤:
INSERT INTO SerialNumbers
SELECT....
因為SELECT
或VALUES
子句中的列數可能不再與INSERT
目標表中的列數匹配。
出於這個原因,解決方案是添加顯式列列表,然后養成始終使用所述列表的習慣。
編輯:肖恩·蘭格的觀點,我假設新列NOT NULL
。 如果它可以為空,則是,會有更多可能的結果,這些結果可能會產生與預期不同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.