PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo một chuỗi trên một bảng hiện có

Đặ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:

  1. Thêm cột.
  2. 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django.db.utils.OperationalError Không thể kết nối với máy chủ

  2. Tạo và xóa cơ sở dữ liệu PostgreSQL trên Ubuntu 16.04

  3. Không thể thả bảng tạm thời trong hàm Postgres:đang được sử dụng bởi các truy vấn đang hoạt động trong phiên này

  4. pg gem sslmode =verify-full, đặt chứng chỉ ở đâu?

  5. PostgreSql CHÈN TỪ CHỌN ID QUAY LẠI