otomatik artan alanları pack etmek[çözüldü]

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

otomatik artan alanları pack etmek[çözüldü]

Mesaj gönderen Lord_Ares »

firebird te auto increment alanların daha önce almış olduğu değerleri nasıl sıfırlıyoruz..
En son Lord_Ares tarafından 16 Eyl 2013 11:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: otomatik artan alanları pack etmek

Mesaj gönderen greenegitim »

SET GENERATOR genaratoradın TO 100;
Mücadele güzelleştirir!
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: otomatik artan alanları pack etmek

Mesaj gönderen Lord_Ares »

hocam hızır gibisin allah razı olsun iki saattir arıyorum gözlerim şaşı olmuştu sayende 2 saniyede buldum :)))
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: otomatik artan alanları pack etmek[çözüldü]

Mesaj gönderen rsimsek »

Yanlış tabir olmasın firebird de auto increment alan yok. Onun yerine generator var. Oluşturup set edersiniz örneğin 1 den başlasın diye.. Fakat siz her seferinde tablonuza yeni bir kayıt eklediğinizde generatörün değerini alıp bir artırmanız ve ilgili alana atamanız gerekiyor. Burada dikkat edilmesi gereken transaction içinde dahi bu olay olup Rollback yapılsa da generatör yeni değeri ile güncellenmiş olur.

Kod: Tümünü seç

select gen_id(gen_id1, 0) from rdb$database => ile gen_id1 in değerini alabilirsiniz.

select gen_id(gen_id1, 1) from rdb$database => ile gen_id1 in değerini 1 artırıp verir.

select gen_id(gen_id1, -1) from rdb$database => ile gen_id1 in değerini 1 azaltıp verir.

select gen_id(gen_id1, -1 * gen_id(gen_id1, 0)) from rdb$database => ile gen_id1 in değerinden kendisi kadar çıkartır yanii sıfırlar.
Bir ek bilgi Firebird de bu şekilde olan artan sayı alanı PostgreSql de alan tipi seçilerek ister smallint, integer veya bigint tipinde serial tipi ile otomatik yapılıyor. Yani alanın tipine integer varchar gibi serial seçiyorsunuz. :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla