OOZOU
Hubungi Kami
Kembali ke TIL
macos

Mereset Sequence Tabel Postgres setelah DELETE

13 Oktober 2020

Saat menghapus record terbaru dari sebuah tabel, Anda dapat mereset penghitung sequence-nya jika kesinambungan field auto-increment penting bagi Anda. Perhatikan tindakan pada tabel berikut, users:

select max(id) from users;

+-----+ 
| max | 
+-----+ 
| 896 | 
+-----+ 
1 rows in set (0.03 sec)

Kemudian, lakukan penghapusan terhadap baris-baris terbaru:

delete from users where created_at > timestamp 'yesterday';
96 rows in set (0.15 sec) 

Nilai auto-increment berikutnya untuk id akan menjadi 897 pada insert berikutnya. Gunakan perintah berikut untuk mengurangi nilai sequence tabel users sebanyak 96.

select setval('users_id_seq',(select max(id) from users));

+--------+
| setval |
+--------+
| 800    |
+--------+
1 rows in set (0.04 sec)

Mengapa Perlu Mereset Sequence?

Mereset sequence di Postgres diperlukan saat Anda ingin menginisialisasi ulang sequence ke nilai awal yang baru, sehingga sequence baru yang berkesinambungan dapat dihasilkan. Hal ini sering dibutuhkan ketika Anda perlu menggabungkan data dari beberapa database, mengubah struktur database, atau memulihkan data yang rusak. Dengan mereset sequence, Anda dapat memastikan kolom primary key terus menghasilkan bilangan bulat yang unik dan berkesinambungan.

Memahami Sequence Primary Key

Sequence primary key adalah objek database yang digunakan untuk menghasilkan nilai bilangan bulat unik bagi kolom primary key dalam sebuah tabel. Sequence ini merupakan komponen penting dalam sistem manajemen basis data relasional, karena memastikan setiap baris dalam tabel memiliki identifier yang unik. Sequence primary key biasanya dibuat saat tabel dibuat, dan digunakan untuk menghasilkan nilai bagi kolom primary key. Memahami cara kerja sequence primary key sangat penting untuk mengelola database Anda secara efektif.

Cara Mereset Sequence

Untuk mereset sequence di Postgres, Anda dapat menggunakan perintah ALTER SEQUENCE. Perintah ini memungkinkan Anda mengubah definisi generator sequence, termasuk nilai awal, increment, dan nilai maksimumnya. Untuk mereset sequence, Anda perlu menentukan nama sequence, nilai awal yang baru, dan increment-nya. Misalnya, untuk mereset sequence bernama “my_sequence” agar dimulai dari 100 dengan increment 1, Anda dapat menggunakan perintah berikut: ALTER SEQUENCE my_sequence RESTART WITH 100 INCREMENT BY 1; Sebagai alternatif, Anda dapat menggunakan fungsi SETVAL untuk mereset sequence ke nilai tertentu. Fungsi ini menetapkan nilai sequence saat ini ke nilai yang ditentukan, dan dapat digunakan untuk mereset sequence ke nilai awal yang baru. Contohnya: SELECT setval('my_sequence', 100);

Tindakan Pencegahan dan Pertimbangan

Sebelum mereset sequence, penting untuk mengambil langkah pencegahan agar tidak terjadi kerusakan atau inkonsistensi data. Berikut beberapa pertimbangan yang perlu diingat:

  • Pastikan Anda memiliki backup database sebelum melakukan perubahan apa pun pada sequence.
  • Pastikan Anda memiliki izin yang diperlukan untuk mengubah sequence.
  • Berhati-hatilah saat mereset sequence, karena hal ini dapat memengaruhi integritas data Anda.
  • Pertimbangkan dampak reset sequence terhadap aplikasi dan pengguna Anda.

Metode Alternatif

Selain menggunakan perintah ALTER SEQUENCE atau fungsi SETVAL, ada metode alternatif untuk mereset sequence di Postgres. Salah satu pendekatannya adalah menggunakan fungsi pg_get_serial_sequence untuk mengambil nama sequence yang terkait dengan sebuah kolom, lalu menggunakan perintah ALTER SEQUENCE untuk mereset sequence tersebut. Contohnya: SELECT pg_get_serial_sequence('my_table', 'id'); ALTER SEQUENCE my_table_id_seq RESTART WITH 100; Pendekatan lainnya adalah menggunakan fungsi SQL untuk memigrasikan sequence primary key ke nilai awal yang baru. Cara ini sangat berguna ketika Anda perlu memastikan nilai sequence tetap berkesinambungan dan unik di beberapa tabel atau database.

Lainnya tentang macos

macos20 Agustus 2021

Menambahkan Drop Shadow ala macOS pada Tangkapan Layar "Parsial" atau Gambar Berbingkai Polos

Secara default, suka atau tidak, kombinasi tombol macOS untuk menangkap layar aplikasi penuh (⇧- ⌘- 5) akan menambahkan bayangan halus di sekitar gambar yang Anda simpan. Ini dapat membuatnya tampak lebih menarik saat…

macos7 November 2020

Mengonversi SVG ke PNG

Di MacOS, instal inkscape (dengan brew) dan gunakan seperti ini:

macos13 Oktober 2020

Tambahkan Spacer ke Dock macOS untuk Membuat Grup Aplikasi

Buka term (atau aplikasi sejenis) lalu tempelkan perintah satu baris berikut:

Punya proyek yang ingin diwujudkan?

Kami ingin mendengar apa yang sedang Anda bangun.

Mulai Percakapanhello@oozou.com
OOZOU Logo

Bangkok · Singapura · Hong Kong

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

Layanan

  • Pengembangan Web
  • Agen AI & Generative AI
  • Pengembangan Aplikasi Mobile
  • Analitik Data & Data Engineering
  • Desain UI/UX & Produk
  • Transformasi Digital

Perusahaan

  • Tentang Kami
  • Karier
  • Blog
  • Studi Kasus
  • Demo Langsung
  • Today I Learned
  • Hubungi Kami

Lainnya

  • Industri
  • Jaringan Mitra
© 2026 OOZOU. Hak cipta dilindungi undang-undang.
Kebijakan PrivasiKode EtikKebijakan ABAC