Дегенмен, бҧл сандардың бірізділігін алуға мҥмкіндік бермейді).
Генератордың мәні оператормен белгіленеді:
SET генераторы <генератордың аты> TO <басталу мәні>
Бірегей мәнді алу ҥшін,
функцияны пайдаланыңыз
GEN_ID (Генератор атауы, қадам)
Генератордың бастапқы мәнін қалпына келтіруге немесе әртҥрлі
қоңырауларға арналған қадамды GEN_ID функциясына ӛзгерту
ҧсынылмайды. Мҧндай жағдайларда генератор бірегей емес мәнді
шығара
алады және соның салдарынан, дерекқор кестесінде жаңа
жазбаны
сақтауға тырысқанда, ерекше жағдай жасалады.
Генератор SQL операторы арқылы жойылуы мҥмкінDROP
GENERATOR <генератор атауы>
Генератор барлық генераторларға сілтеме жасаған кезде сақталатын
процедуралар мен дерекқордан жойылғаннан
кейін ғана жойылуы
керек.
Тӛмендегі мысалда жаңа жолды қосқанда генератордың
қолданылуы суреттеледі. Дерекқорда САТЫЛЫМ бағанындағы
бағанның генераторы анықталсын:
CREATE GENERATOR Ген_нӛмір;
SET GENERATOR Ген_нӛмір TO 0;
Генераторға тікелей INSERT операторынан
сілтеме келесідей
жазылуы мҥмкін:
INSERT INTO PRODAJA
(Нӛмір, кҥні, Саны, Тауар, Тҧтынушы)
VALUES (
GEN_ID (Ген_номер, 1) ,
'01.0 5.2 013"
7
,
100, «Cахар»,
«ООО Ромашка»)
Триггердің кӛмегі арқылы негізгі баған дерекқордағы жаңа жолды
жазудан бҧрын шақырылған бірегей мән беріледі деп тҥсінуге болады:
CREATE TRIGGER BI_PRODAJA
FOR САТЫЛЫМ ACTIVE
BEFORE INSERT
286
AS
BEGIN
NEW. Нӛмір = GEN_ID (Ген_нӛмір, 1)
END
Бірегей мәндерді жасау ҥшін сақталатын
процедураны пайдалана
аласыз:
CREATE PROCEDURE GEN_PROC RETURNS (N
INTEGER)
AS
BEGIN
N= GEN_ID (Ген_Нӛмір, 1)
SUSPEND
END
Генераторлардың маңызды ерекшелігі - олармен жҧмыс істеу кез-
келген мәміленің контекстінен тыс орындалады. Бҧл дегеніміз, сіз бір
мезгілде әртҥрлі бәсекелес транзакциялардың
бір генераторына қол
жеткізгенде ешқашан қҧлыптау қақтығысы болмайды және әрбір
параллель процесс бірегей жаңа сандық мәнге ие болады. Мән
генераторға қол жеткізу уақытына байланысты.
12.8.
Достарыңызбен бөлісу: