Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.081 c
2-1158950941
spaider
2006-09-22 22:49
2006.10.15
Принтер


15-1159095853
DillerXX
2006-09-24 15:04
2006.10.15
Гении


1-1157210797
Ragazor
2006-09-02 19:26
2006.10.15
Как передать из dll хранящиеся там frame-ы?


15-1159255048
Экспериментатор
2006-09-26 11:17
2006.10.15
Перемешались знаки препинания, звездочки кавычки


3-1155190299
zdm
2006-08-10 10:11
2006.10.15
куча query,table и т.д.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский