|
Тема
|
Interbase, Gen_ID
|
|
Автор |
VladoVasilev (минаващ) |
Публикувано | 30.07.05 11:11 |
|
Искам да подпитам дали е добре като подход:
Сървъра е Interbase.
В базата на всяка таблица имам поле ID integer primary key, което е унификатора на записа. Съответно когато записвам нов запис трябва по някакъв начин да избера и подходяща стойност за това поле. Самото приложение ми е клиент-сървър, работи в мрежа. Досега го правех по следния начин : В една таблица RECCOUNTS има 2 полета: TableName и CurrentNо, съответно за всяка таблица каква е последната стойност за ID-то и. Съответно една stored-procedura
CREATE PROCEDURE GETNEXTID ( TBLNAME VARCHAR(32))
RETURNS (OUTID INTEGER)
AS
begin
SELECT CURRENTNO+1 FROM RECCOUNTS WHERE TABLENAME = :TBLNAME INTO :OUTID;
UPDATE RECCOUNTS SET CURRENTNO = CURRENTNO+1 WHERE TABLENAME = :TBLNAME;
suspend;
END;
и така си генерирам ID-та. Това обаче не е много добро като бързодействие май. От друга страна INTERBASE и така и така си има вградени генератори, та питанката ми е струва ли си да ползвам тях (все пак гарантират че независимо от броя портебители които в момента викат генератора, генерираните ID-та винаги ще са уникални). Проблема е че за всяка таблица трябва да има и генератор, ако съм разбрал правилно принципа, което май не е много добре. Мнения?
| |
|
------------------------------------------------------------------------------------------------------
Проблема е че за всяка таблица трябва да има и генератор, ако съм разбрал правилно принципа, което май не е много добре.
------------------------------------------------------------------------------------------------------
Това не е така. Можеш да ползваш един генератор за колкото таблици искаш. Тук преди време се завихри един спор за AutoInc срещу генератори...
Всъщонст това според мен е най голямото предимство на генераторите. Пример: Имаш документ, който съдържа редове с различни структури на записа. Правиш си толкова таблици, колкото са типовете редове и ползваш ЕДИН генератор за ID.
| |
|
Логично :)
Май много се бях вглъбил в идеята че като е ID, ще е с последователни стойности...иначе ОЧЕВИДНО няма проблем да си се ползва за няколко таблици генератора...забележката ми беше неуместна....а темата за генераторите и AutoInc-а беше наистина интересна.
Мерси!
| |
Тема
|
Re: Interbase, Gen_ID
[re: VladoVasilev]
|
|
Автор | TTRex (Нерегистриран) |
Публикувано | 01.08.05 16:24 |
|
Не е проблем да има и на всяка таблица генератори. Хората говорят за бази данни с над 500 таблици, още толкова процедури и генератори. Всичко си работи.
| |
|
|
|
|