Текущий архив: 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.52 MB
Время: 0.046 c