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.
- 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
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;
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.