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

Thêm cột tăng tự động vào bảng hiện có được sắp xếp theo ngày

Nếu bạn thêm một cột nối tiếp như vậy, các hàng hiện có sẽ tự động được cập nhật theo thứ tự "tùy ý".

Để kiểm soát thứ tự tạo ID, bạn cần thực hiện việc này theo nhiều bước:

Trước tiên, hãy thêm cột không có một mặc định (serial ngụ ý một giá trị mặc định)

ALTER TABLE tickets ADD COLUMN ticket_id integer;

Sau đó, tạo một chuỗi để tạo các giá trị:

create sequence tickets_ticket_id_seq;

Sau đó, cập nhật các hàng hiện có

update tickets 
  set ticket_id = t.new_id
from (
   select id, nextval('tickets_ticket_id_seq') as new_id
   from tickets
   order by "date"
) t
where t.id = tickets.id;

Sau đó đặt trình tự làm mặc định cho cột mới

alter table tickets alter column ticket_id set default nextval('tickets_ticket_id_seq');

Cuối cùng, liên kết chuỗi với cột (là serial cũng làm trong nền):

alter sequence tickets_ticket_id_seq owned by tickets.ticket_id;

Nếu bảng thực sự lớn ("hàng chục" hoặc "hàng trăm" hàng triệu) thì việc tạo bảng mới có thể nhanh hơn:

create sequence tickets_ticket_id_seq;
create table tickets_new
as
select id, nextval('activities_ticket_id_seq') ticket_id, "date", status
from tickets
order by "date";

drop table tickets cascade;
alter table tickets_new rename to tickets;
alter table tickets add primary key (id);
alter sequence tickets_ticket_id_seq owned by tickets.ticket_id;

Sau đó, tạo lại tất cả các khóa và chỉ mục ngoại cho bảng đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm tất cả các giao điểm của tất cả các tập hợp phạm vi trong PostgreSQL

  2. Tìm khu rừng bao trùm (VỚI RECURSIVE, PostgreSQL 9.5)

  3. Quy trình làm việc từ xa Symfony2 + Netbeans (feat. Git)

  4. Cách kết nối GraphQL và PostgreSQL

  5. Chuyển đổi các lệnh SQL sang ORM của Python