PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Tambahkan kolom kenaikan otomatis ke tabel yang ada yang dipesan berdasarkan tanggal

Jika Anda menambahkan kolom serial seperti itu, baris yang ada akan otomatis diperbarui dalam urutan "arbitrer".

Untuk mengontrol urutan pembuatan ID, Anda perlu melakukan ini dalam beberapa langkah:

Pertama tambahkan kolom tanpa default (serial menyiratkan nilai default)

ALTER TABLE tickets ADD COLUMN ticket_id integer;

Kemudian buat urutan untuk menghasilkan nilai:

create sequence tickets_ticket_id_seq;

Kemudian perbarui baris yang ada

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;

Kemudian jadikan urutan sebagai default untuk kolom baru

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

Terakhir, kaitkan urutan dengan kolom (yang merupakan serial juga di latar belakang):

alter sequence tickets_ticket_id_seq owned by tickets.ticket_id;

Jika tabelnya sangat besar ("puluhan" atau "ratusan" juta) maka membuat tabel baru mungkin lebih cepat:

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;

Kemudian buat kembali semua kunci asing dan indeks untuk tabel itu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 Cara Mendaftar semua Pemicu untuk Tabel yang Diberikan di PostgreSQL

  2. Upsert di Postgres menggunakan node.js

  3. Pangkas spasi tambahan dengan PostgreSQL

  4. pencarian teks postgres

  5. Cara mengatur sumber data SSL Spring/Heroku/postgres