![](/img/trans.png)
[英]Adding a column to existing PostgreSQL table with constraint and default value
[英]Add a column with a default value to an existing table in postgresql
是否有 postgres 查詢將新列添加到現有表並使用特定值自動填充該表的所有行的該列,例如"A1"
,僅一次,因為該列被創建,以便我可以仍然將列的 DEFAULT 值設置為另一個值,比如說"B2"
?
為了清楚起見,我正在尋找這樣的東西:
鑒於my_table
:
name | work
------------------------
bob | fireman
carl | teacher
alice | policeman
我的查詢
ALTER TABLE my_table
ADD COLUMN description varchar(100)
DEFAULT "B2"
COMMAND_I_D_WISH_TO_KNOW "A1";
將my_table
更改為
name | work | description
-------------------------------------
bob | fireman | "A1"
carl | teacher | "A1"
alice | policeman | "A1"
這樣如果之后我運行查詢
INSERT INTO my_table(name, work)
VALUES karen, developer;
my_tables
變成
name | work | description
-------------------------------------
bob | fireman | "A1"
carl | teacher | "A1"
alice | policeman | "A1"
karen | developer | "B2"
參考最新的文檔,可以使用兩條語句完成此操作。
ALTER TABLE my_table ADD COLUMN description varchar(100) DEFAULT 'A1';
ALTER TABLE my_table ALTER COLUMN description SET DEFAULT 'B2'
下面包含了一個完整的可重現樣本:
CREATE TABLE my_table (
"name" VARCHAR(5),
"work" VARCHAR(9)
);
INSERT INTO my_table
("name", "work")
VALUES
('bob', 'fireman'),
('carl', 'teacher'),
('alice', 'policeman');
查詢#1
select * from my_table;
姓名 | 工作 |
---|---|
鮑勃 | 消防隊員 |
卡爾 | 老師 |
愛麗絲 | 警察 |
查詢#2
ALTER TABLE my_table
ADD COLUMN description varchar(100)
DEFAULT 'A1';
沒有要顯示的結果。
查詢 #3
select * from my_table;
姓名 | 工作 | 描述 |
---|---|---|
鮑勃 | 消防隊員 | A1 |
卡爾 | 老師 | A1 |
愛麗絲 | 警察 | A1 |
查詢 #4
ALTER TABLE my_table
ALTER COLUMN description SET DEFAULT 'B2';
沒有要顯示的結果。
查詢 #5
INSERT INTO my_table("name", "work")
VALUES ('karen', 'developer');
沒有要顯示的結果。
查詢 #6
select * from my_table;
姓名 | 工作 | 描述 |
---|---|---|
鮑勃 | 消防隊員 | A1 |
卡爾 | 老師 | A1 |
愛麗絲 | 警察 | A1 |
卡倫 | 開發商 | B2 |
讓我知道這是否適合您。
是的,您可以通過在一個 ALTER 中使用兩個操作來做到這一點。
ALTER TABLE my_table
ADD COLUMN description varchar(100) DEFAULT 'A1',
ALTER COLUMN description SET DEFAULT 'B2';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.