Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

Начальное значение генератора   Найти похожие ветки 

 
RomanH ©   (2006-08-15 16:22) [0]

Доброго дня мастера.Извините что отвлекаю, но для эрудиции очень хочеться узнать.Какие промышленные БД умеют задавать начальное значение генератора как в InterBase и FireBird.


 
Anatoly Podgoretsky ©   (2006-08-15 16:35) [1]

А много ли промышленных баз имеют генераторы?
InterBase и FireBird не относятся к промышленным.


 
Desdechado ©   (2006-08-15 16:44) [2]

SEQUENCE - тот же генератор
AFAIK, наличие сиквенсов - требование стандарта

> А много ли промышленных баз имеют генераторы?
В Оракле есть. Вроде промышленный :)

> InterBase и FireBird не относятся к промышленным.
Критерий отнесения какой?


 
RomanH ©   (2006-08-15 16:57) [3]


> InterBase и FireBird не относятся к промышленным.

Всемиуважаемый Фаронов В.В. пишет что InterBase промышленный SQL-сервер.

> Desdechado ©  

SEQUENCE,AFAIK - это SQL-серверы.


 
Desdechado ©   (2006-08-15 17:01) [4]

> SEQUENCE,AFAIK - это SQL-серверы.
не понял этой фразы :(


 
PEAKTOP ©   (2006-08-15 17:38) [5]

В  Firebird v2.0 с целью совместимости для импотра данных из других БД в набор ключевых слов уже добавлено
SEQUENCE = GENERATOR


 
Desdechado ©   (2006-08-15 17:57) [6]

Теперь по сабжу:
В Оракле начальное значение задается при CREATE или ALTER сиквенса. Там же задается шаг (в IB его можно варьировать) и зациклить ли сиквенс при достижении верхнего предела.


 
RomanH ©   (2006-08-15 18:17) [7]


> Desdechado ©

Извените меня, что я такой не продвинутый.Хоть бей по голове, но я не знаю
что такое сиквенс и AFAIK.Объясните пожайлусто в кратце.


 
Desdechado ©   (2006-08-15 18:25) [8]

SEQUENCE - дословно "последовательность". Правило генерации последовательности чисел. Одно из понятий SQL.
AFAIK = "as far as I khow" = "насколько мне известно"


 
RomanH ©   (2006-08-15 18:48) [9]


> Desdechado ©

Ну вот теперь я понял, что вы мне объясняете.
То есть sequence-это правило и для Paradox и для Oracle.(Или я опять не догоняю).А по сабжу начальное значение генератора можно определить только в Oracle.


 
Desdechado ©   (2006-08-15 18:52) [10]

> это правило и для Paradox и для Oracle
Это "правило" описано в стандарте. Но насколько его поддерживают производители конкретных СУБД - это их дело. В парадоксе есть тупой автоинкремент.

> начальное значение генератора можно определить только в Oracle
Нет. Не только. В IB/FB тоже можно задать. В других не знаю. Помнится, в Informix тоже автоинкремент был, да и в скуле вроде тоже.


 
Anatoly Podgoretsky ©   (2006-08-15 19:13) [11]

Desdechado ©   (15.08.06 16:44) [2]
Расплывчатый.


 
Anatoly Podgoretsky ©   (2006-08-15 19:15) [12]

Desdechado ©   (15.08.06 16:44) [2]
Я не знаю SEQUENCE - тот генератор или тип, я плохо знаком с Ораклом.
Последовательности можно создавать или типом поля или генератором и триггером записывать его в поле.
Если можно написать SELECT SEQUENCE то скорее всего генератор.


 
Desdechado ©   (2006-08-16 11:10) [13]

Anatoly Podgoretsky ©   (15.08.06 19:15) [12]
SEQUENCE - это отдельный элемент метаданных, а не тип поля


 
term1t ©   (2006-08-16 13:38) [14]

<quote>Если можно написать SELECT SEQUENCE</quote>
нельзя


 
Desdechado ©   (2006-08-16 13:40) [15]

> term1t ©   (16.08.06 13:38) [14]
можно


 
Sergey13 ©   (2006-08-16 13:59) [16]

> [14] term1t ©   (16.08.06 13:38)
> нельзя
Это если упорно не читать документацию, то оно конечно.


 
term1t ©   (2006-08-16 14:57) [17]

незнаю-незнаю...
можно разве что
Select sequense_name.curval (.nextval)
from SYS.dual


 
Sergey13 ©   (2006-08-16 15:11) [18]

> [17] term1t ©   (16.08.06 14:57)

И чем это не ндравится?
ЗЫ: SYS. для DUAL можно не указывать.


 
Anatoly Podgoretsky ©   (2006-08-16 19:19) [19]

Desdechado ©   (16.08.06 11:10) [13]
Anatoly Podgoretsky ©   (15.08.06 19:15) [12]
SEQUENCE - это отдельный элемент метаданных, а не тип поля

Я согласен заменить термин тип поля на термин метаданные, если так легче будет.

А с вопросом SELECT у вас возникли разногласия, так что пока не ясно. И так как я не знаю Оракл, то конструкция FROM dual мне мало что говорит, но вижу я ее часто.

Это Select sequense_name.curval мне тоже не позволяет сделать вывод.

Специалисты по Оракл скажите точно (желательно в граммах), что точно это SEQUENCE - только не перевод конечно, а сущность.
Это генератор, это метаданные, это что то другое.


 
Desdechado ©   (2006-08-16 19:28) [20]

SEQUENCE - это расширенный аналог IB-генератора.
Потому про метаданные и упомянул. Он отдельная сущность, не привязанная к таблицам и т.п.


 
Anatoly Podgoretsky ©   (2006-08-16 19:33) [21]

То есть можно написать SELECT SEQUENCE и будет уникальный номер и как я понимаю из твоих объяснений это будет уникальный номер по всей базе при использование в качестве ИД в таблицах.
Кстати а как он связывается с таблицей в этом качестве. В интербейс через триггер. И если в таком случае в Оракл подлинные автоинкриментные поля.

Сообственно это просто для интереса, поскольку использовать в практике не предвидится.


 
Val ©   (2006-08-16 19:46) [22]

>[21] Anatoly Podgoretsky ©   (16.08.06 19:33)
сиквенс оракла - аналог генератора интербейза.
dual - системная табличка с одним значением одной записи для выборок-присвоений, несколько похоже, как в IB c rdb$database.
то есть, select <значение> from dual вернет 1 запись с одним значением =<значение>.


 
Sergey13 ©   (2006-08-17 08:18) [23]

2 [21] Anatoly Podgoretsky ©   (16.08.06 19:33)
> То есть можно написать SELECT SEQUENCE и будет уникальный
> номер и как я понимаю из твоих объяснений это будет уникальный
> номер по всей базе при использование в качестве ИД в таблицах.
Сиквенс не отвечает за уникальность, тем более по всей базе. Он просто выдает следующее последовательное число. Его можно зациклить и он начнет сначала, после достижения максимального значения.

> Кстати а как он связывается с таблицей в этом качестве.
> В интербейс через триггер.
Так же и тут.

> И если в таком случае в Оракл подлинные автоинкриментные поля.
Нет.


 
term1t ©   (2006-08-17 13:29) [24]

CREATE SEQUENCE  Sequence_name
INCREMENT BY n
START WITH  n
MAXVALUE n | NOMAXVALUE
MINVALUE n | NOMINVALUE
CYCLE  |  NOCYCLE
CACHE n  |  NOCACHE

где :
INCREMENT BY n – интервал между двумя последовательными номерами; n является целым числом, приращение при генерации чисел равно 1.
START  WITH  n – первое генерируемое число в последовательности. . Если это  предложение опущено, последовательность начинается с 1.
MAXVALUE n  -  максимальное значение, которое может генерировать последовательность
NOMAXVALUE  -  максимальное значение по умолчанию, равное 10 27.
MINVALUE n – минимальное значение последовательности.
NOMINVALUE   -  задает минимальное значение, равное 1.
CYCLE  |  NOCYCLE  - продолжается ли циклическая генерация чисел после достижения максимального или минимального значения. Значение по умолчанию – NOCYCLE.
CACHE   n | NOCACHE – кол-во чисел, которые сервер распределяет предварительно и хранит в памяти. По умолчанию сервер хранит в кэш-памяти 20 значений.

далее пишешь тригерок типа:

Create or replace trigger "base_name".trigger_name before insert  on table_name for each row
begin
if :new.id IS NULL then
Select sequence_name.nextval into :new.id from dual
end if;
end;


 
Val ©   (2006-08-17 13:38) [25]

>[24] term1t ©   (17.08.06 13:29)
после такого кода, будет вопрос: "как получить значение генератора/сиквенса перед вставкой?" ;)


 
Desdechado ©   (2006-08-17 13:42) [26]

> "base_name".trigger_name
триггеры хранятся в схемах (местах дислокации пользовательских объектов), а не в базах


 
term1t ©   (2006-08-17 14:16) [27]

>после такого кода, будет вопрос: "как получить значение генератора/сиквенса перед вставкой?" ;)

зачем знать это значение?


 
term1t ©   (2006-08-17 14:18) [28]

>триггеры хранятся в схемах (местах дислокации пользовательских объектов), а не в базах
ну да... "Schema_name".trigger_name ... описалси...


 
Sergey13 ©   (2006-08-17 14:18) [29]

> [27] term1t ©   (17.08.06 14:16)

Любопытсва ради. 8-) Или для вставки в связанные таблицы.


 
Val ©   (2006-08-17 14:18) [30]

детали вставлять, например.


 
Anatoly Podgoretsky ©   (2006-08-17 16:35) [31]

Val ©   (16.08.06 19:46) [22]
Спасибо, мои знания стали шире.



Страницы: 1 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.047 c
1-1157712245
TakTak
2006-09-08 14:44
2006.10.15
поместить в автозагрузку программу.


15-1159037200
MAster_
2006-09-23 22:46
2006.10.15
Подскажите пож. как сделать для своей программы Skin


3-1155633565
Alpine
2006-08-15 13:19
2006.10.15
Возможно ли помещать апостроф в запись ?


2-1159268728
TrainerOfDolphins
2006-09-26 15:05
2006.10.15
DBNavigator вертикально


15-1159286396
Михель
2006-09-26 19:59
2006.10.15
А как делаются отправлялки смсок, кто-нибудь знает?