otomatik artan alanları pack etmek[çözüldü]
otomatik artan alanları pack etmek[çözüldü]
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.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: otomatik artan alanları pack etmek
hocam hızır gibisin allah razı olsun iki saattir arıyorum gözlerim şaşı olmuştu sayende 2 saniyede buldum
))

Re: otomatik artan alanları pack etmek[çözüldü]
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.
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. 
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.

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!