PostgreSQL Auto Increment ID Sıfırlama ve Sequence Yönetimi

Bu rehberde PostgreSQL auto increment ID sıfırlama işlemini, TRUNCATE ve ALTER SEQUENCE komutları ile nasıl yapacağınızı adım adım anlatıyoruz.

Kısa özet:
  • TRUNCATE → Tüm veriyi siler ve ID'yi sıfırlar
  • ALTER SEQUENCE → Verileri silmeden ID'yi değiştirir
  • pg_get_serial_sequence → Sequence adını öğrenir

PostgreSQL'de Auto Increment ID Nasıl Çalışır?

PostgreSQL'de otomatik artan ID değerleri genellikle SERIAL veya IDENTITY kolonları ile oluşturulur. Bu sistem, arka planda çalışan bir sequence (sıra) yapısı ile yönetilir.

Her yeni kayıt eklendiğinde, bu sequence bir sonraki ID değerini üretir.


1 — TRUNCATE ile ID Sıfırlama

Eğer tablodaki tüm verileri silmek ve ID değerini sıfırlamak istiyorsanız TRUNCATE komutunu kullanabilirsiniz.

Kullanım

TRUNCATE table_name RESTART IDENTITY;

Örnek

TRUNCATE users RESTART IDENTITY;

Bu komut:

  • Tüm verileri siler
  • ID değerini tekrar 1’den başlatır
Uyarı: Bu işlem geri alınamaz ve tüm verileri kalıcı olarak siler.

2 — ALTER SEQUENCE ile ID Değerini Değiştirme

Verileri silmeden ID değerini belirli bir sayıdan başlatmak için ALTER SEQUENCE kullanılır.

Kullanım

ALTER SEQUENCE sequence_name RESTART WITH new_value;

Örnek

ALTER SEQUENCE users_id_seq RESTART WITH 10;

Bu işlemden sonra yeni kayıtlar 10’dan başlayarak artar.


3 — Sequence Adını Öğrenme

Sequence adını bilmiyorsanız aşağıdaki sorguyu kullanabilirsiniz:

SELECT pg_get_serial_sequence('table_name', 'column_name');

Örnek

SELECT pg_get_serial_sequence('users', 'id');

Bu sorgu ilgili kolonun sequence adını döndürür.


4 — Gerçek Hayat Senaryosu

Örneğin products tablosundaki ID değerini 100’den başlatmak istiyorsanız:

Adım 1 — Sequence Adını Bul

SELECT pg_get_serial_sequence('products', 'id');

Adım 2 — Sequence Güncelle

ALTER SEQUENCE products_id_seq RESTART WITH 100;
Yeni eklenen kayıtlar artık 100’den başlayacaktır.

Ne Zaman Hangi Yöntem Kullanılmalı?

  • Test ortamı temizliği: TRUNCATE
  • Veri korunacaksa: ALTER SEQUENCE
  • Sequence bilinmiyorsa: pg_get_serial_sequence

Sık Sorulan Sorular

TRUNCATE ile DELETE farkı nedir?

TRUNCATE daha hızlıdır ve ID’yi sıfırlar. DELETE ise sadece veriyi siler.

Sequence neden senkron dışı olur?

Manuel veri ekleme veya restore işlemleri sequence değerini bozabilir.

Production ortamda güvenli mi?

Dikkatli kullanılmalıdır. Özellikle TRUNCATE veri kaybına neden olabilir.

Etiketler: postgresql auto increment reset, postgresql sequence reset, alter sequence postgres, truncate restart identity, postgres id sıfırlama

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Database ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *