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

Membuat urutan pada tabel yang ada

Tetapkan nilai default saat Anda menambahkan kolom baru:

create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');

Mengubah nilai default untuk kolom yang ada tidak mengubah data yang ada karena database tidak memiliki cara untuk mengetahui nilai mana yang harus diubah; tidak ada bendera "kolom ini memiliki nilai default" pada nilai kolom, hanya ada nilai default (awalnya NULL karena Anda tidak menentukan apa pun) dan nilai saat ini (juga NULL) tetapi cara untuk membedakan antara "NULL karena ini adalah default" dan "NULL karena secara eksplisit disetel ke NULL". Jadi, ketika Anda melakukannya dalam dua langkah:

  1. Tambahkan kolom.
  2. Ubah nilai default.

PostgreSQL tidak akan menerapkan nilai default ke kolom yang baru saja Anda tambahkan. Namun, jika Anda menambahkan kolom dan memberikan nilai default pada saat yang sama, maka PostgreSQL mengetahui baris mana yang memiliki nilai default (semuanya) sehingga dapat memberikan nilai saat kolom ditambahkan.

Omong-omong, Anda mungkin menginginkan NOT NULL di kolom itu juga:

create sequence rid_seq;
alter table test add column rid integer not null default nextval('rid_seq');

Dan, sebagai a_horse_with_no_name catatan, jika Anda hanya ingin menggunakan rid_seq untuk test.rid . Anda kolom maka Anda mungkin ingin menyetel kolom pemiliknya ke test.rid sehingga urutannya akan hilang jika kolom dihilangkan:

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. Nama tabel atau kolom tidak boleh diawali dengan angka?

  2. Kunci asing tipe serial - pastikan selalu diisi secara manual

  3. Klausa WHERE dan JOIN memesan kinerja

  4. Apakah kasus penting ketika 'otomatis' memuat data dari S3 ke tabel Redshift?

  5. Permintaan Postgres untuk memeriksa string adalah angka