Turning gears are the logo of co-scripts

 

Pek çok SQL sunucuda oluşturulan tablolarda sürekli ve düzenli olarak kayıtları takip eden bir nirengi noktasına ihtiyaç duyulur. Genellikle bu otomatik artması için "auto increment" özelliği olan * bir alan olarak, genellikle de "id" adı verilen INTEGER veri tipinde bir alandır.

Ancak deneme yanılma yaparken çok farklı yerlere giden veya herhangi bir nedenle güncellenmesi en azından sıfırlanması gereken id alanı sorun olur. Biraz google araması bizi sonuca ulaştırır ve birden çok çözümü vardır.

Ancak bu yazıda SQLite tablolarında bu nasıl pratikçe yapılır ondan bahsetmek istedim.

SQLite tablolardaki uç değerleri (en çok artan key -primary key- değerleri gibi)  özel bir tabloda tutar (sqlite_sequence). Şurada detaylı bilgi mevcut.

Bu tablo yine herhangi bir tablo gibi sql ile güncellenebilir, silinebilir veya modifiye edilebilir.

Diyelim "evrak_tipleri" isminde, ofisimizdeki evrak tiplerini tuttuğumuz bir tablo olsun. Tabloyu silmek ve id değerini 2 den başlayacak şekilde yine auto increment olarak ayarlamak istiyoruz.

Sevdiğimiz bir sql bağlantısı yönetim programında (Navicat Premium veya Mozilla eklentisi olan (SQLite için) SQLite Manager add-on veritabanına bağlanıp sql komutlarıyla id bilgisini dilerek veya güncelleyerek istediğimizi yaparız.

	SELECT * FROM sqlite_sequence

ile tablo isimlerimizi ve RowID'leri tutan tabloya ulaşıyoruz. "name" ve "seq" adında iki alan göreceğiz. Name tablo isimlerini seq'de rowid sequence'lerini tutmaktadır.

	SELECT * FROM sqlite_sequence ss WHERE ss.name='evrak_tipleri'

ile evrak_tipleri tablosuna ait veriyi görebiliriz.

	UPDATE sqlite_sequence SET seq=0 WHERE name='evrak_tipleri'

ile evrak_tipleri tablosunun seq de yer alan rowid değeri sıfırlanmış oldu.

Bu işlemin otomatik arttırma algoritmasını bozabileceğini SQLite dökman sayfasında yazıyor. Çok ciddi bir veri işinde iseniz 2. bir alanda düzenli artan id'yi ayrıca tkaip etmenizde ve normal id ile arada bir kontrol ile test etmenizde fayda var.

Bu konuda ek bilgiler edindikçe bu yazıyı güncelleyeceğim.

VTleri lütfen kendi riskinizle kurcalayınız. Yedek alınız, sonra ah vah demeyiniz.

co-scripts tag image sqlitereset auto incrementreset idsqlite_sequenceseqreset id
ID:264 | Okunma:2781

İlişkili Olabilecek Konular
SQLite Kurulumu ve VBScript ile Kullanımı