Đặt giá trị mặc định khi bạn thêm cột mới:
create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');
Việc thay đổi giá trị mặc định cho các cột hiện có không làm thay đổi dữ liệu hiện có vì cơ sở dữ liệu không có cách nào để biết giá trị nào nên được thay đổi; không có cờ "cột này có giá trị mặc định" trên các giá trị cột, chỉ có giá trị mặc định (ban đầu là NULL vì bạn không chỉ định bất kỳ thứ gì khác) và giá trị hiện tại (cũng là NULL) nhưng cách để phân biệt giữa "NULL bởi vì nó là mặc định "và" NULL vì nó đã được đặt rõ ràng là NULL ". Vì vậy, khi bạn thực hiện theo hai bước:
- Thêm cột.
- Thay đổi giá trị mặc định.
PostgreSQL sẽ không áp dụng giá trị mặc định cho cột bạn vừa thêm. Tuy nhiên, nếu bạn thêm cột và cung cấp giá trị mặc định cùng một lúc thì PostgreSQL sẽ biết hàng nào có giá trị mặc định (tất cả chúng) để nó có thể cung cấp giá trị khi cột được thêm vào.
Nhân tiện, bạn có thể cũng muốn KHÔNG ĐẦY ĐỦ trên cột đó:
create sequence rid_seq;
alter table test add column rid integer not null default nextval('rid_seq');
Và, với tư cách a_horse_with_no_name
ghi chú, nếu bạn chỉ định sử dụng rid_seq
cho test.rid
của bạn thì bạn có thể muốn đặt cột chủ sở hữu của nó
thành test.rid
để trình tự sẽ bị loại bỏ nếu cột bị xóa:
alter sequence rid_seq owned by test.rid;