Firebird'i kullanarak otomatik artış alanı oluşturmanın kolay bir yolu var mı? FlameRobin yönetici aracını yükledim, ancak araç boyunca bir otomatik artış alanı oluşturma işlemi karmaşıktır. Böyle bir kimlik alanını sadece bir onay kutusunu tıklatarak veya Flamerobin dışındaki başka bir aracı kullanarak oluşturamıyorum?Firebird veritabanında otomatik artış alanı oluşturmanın en kolay yolu
cevap
Firebird 2.5 ve önceki sürümlerde otomatik artış alanları yok. Bir dizi (aka jeneratörü) ve bir tetikleyici ile kendiniz oluşturmanız gerekir.
Sıra, SQL standart terimidir ve üreteç, tarihsel Firebird terimidir, her ikisi de kullanılır.
create a sequence için: Ayrıca
set term !! ;
CREATE TRIGGER T1_AUTOINCREMENT FOR T1
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.ID = next value for t1_id_sequence;
END!!
set term ; !!
bakınız: How to create an autoincrement column?
Firebird hep birincil anahtar ID
içeren bir tablo T1
üzerinde kimliği oluşturmak için
CREATE SEQUENCE t1_id_sequence;
bir tetikleyici oluşturmak için 3 bunu ortaya çıkardığı gibi, bu biraz daha kolay hale getirir kimlik sütunları. Pratik olarak sizin için bir dizi + tetikleyici üretmek için sözdizimsel şekerdir. Örneğin
create table t1 (
id integer generated by default as identity primary key
)
Firebird 3 sadece kullanıcılar (değer hatalarını çoğaltmak yol açabilecek) kendi id değerleri belirtmek edebiliyoruz demektir "generated by default
" destekler; "generated always
" 4.
Ayrıca bkz Firebird 3 release notes, bölüm "Kimlik Kolon Tipi" Firebird eklenecektir.
Flamerobin ayrıca sizin için bir dizi + tetikleyici oluşturmak üzere takım oluşturma olanağı sağlar.
Açık tablo özellikleri: Varolan bir tabloyu varsa, aşağıdaki adımları izleyebilirsiniz birincil anahtar sütununun
Açık sütun özelliklerini
Varsayılan sütun özellikleri, seç new FlameRobin tarafından oluşturulan
Jeneratör (sekansı) ve tetik kodu: Jeneratör ve tetik oluşturur. Yukarıdaki örneklemin tersine, bu tetikleyicinin, bir kullanıcının gelecekteki kopyalardan kaçınmak için bazı mantıklarla kendi kimlik değerlerini belirtmesine izin verdiğini unutmayın.Bu yürütün (ve taahhüt unutmayın):
Hassas cevabı. Teşekkürler @mark :) –