-
> И ПРАВИЛЬНО делает
Оракл - ацтой, ini-файлы рулят!
-
> Оракл - ацтой, ini-файлы рулят!
оракл - это система уравления ини-файлами, только они зашифрованы а ты не знал? ;)
> >Генераторы же прибавляют и убавляют что угодно, тем самым > много более полезны.если не сложно, приведите пример выгоды > от такого поведения?
да хотя бы то, что можно самому варьировать шаг генератора в любом месте, а не только при создании (хочу, добавлю 10, хочу - единицу), как в оракле генераторы можноприменить ведь не только для создания искусственных первичных ключей
-
> MsGuns (25.06.2008 9:49:19) [19]
Неплохо бы уточнить, что такое Сиквенс, а то слухи ходят разные, мол это какая то сверхособенная сущность.
-
>Правильный-Вася (25.06.08 11:00) [21] произвольный шаг - через небольшую самописную ф-цию: gen_id(p_sequence_name => 'sequence_name', p_step => :step)
не то?
-
> произвольный шаг - через небольшую самописную ф-цию:
а в обратную сторону?
-
> SEQUENCE только и умеет что "1" прибавлять. > Генераторы же прибавляют и убавляют что угодно, тем самым много более полезны. > Имхо, оставят :)Возможно, в Оракле так и есть - конкретно систаксис и особенности Оракла я не знаю, так что судить не могу. > а в обратную сторону?В ЖарПтице это не более чем, как замена одного служебного слова другим, GEN_ID никуда не денется. Удобства, конечно прибавилось: можно прямо в Insert делать автоинкремент без триггера INSERT INTO MY_TABLE(ID, NAME)VALUES(NEXT VALUE FOR <SEQUENCE_NAME>, 'VALUE'); , но "внутрях" сервера ничего не поменялось. Также прирост значения SEQUENCE в Firebird в функции GEN_ID может быть отрицательным. Хочешь "расти" на вставке не на единицу, - пожалуйста, хочешь расти "в обратную сторону" - кто не дает ? > Неплохо бы уточнить, что такое Сиквенс, а то слухи ходят разные, мол это какая то сверхособенная сущность.Ничего нового. Просто в разных SQL серверах стали появляться транзитивно-независимые переменные (например, в MySQL они называются VARIABLES), которые используют в качестве генераторов уникальных значений по образу и подобию того, как в InterBase с давних времен использовали GENERATOR. Чтоб не путаться и иметь кросс-серверные скрипты создания метаданных БД договорились, что отныне они будут именоваться SEQUENCE у всех.
-
> PEAKTOP (25.06.2008 18:53:25) [25]
Вот взял все и приземлил, некоторые Ораклисты утверждают, что SEQUENCE в Оракл не имеет аналогов, IB/FB/MsSQL это всего лишь бледные поделки.
-
> Удобства, конечно прибавилось: можно прямо в Insert делать > автоинкремент без триггера INSERT INTO MY_TABLE(ID, NAME) > VALUES(NEXT VALUE FOR <SEQUENCE_NAME>, 'VALUE');
А чем это отличается от возможности INSERT INTO MY_TABLE(ID, NAME)VALUES(GEN_ID(<SEQUENCE_NAME>, 1), 'VALUE'); которая есть с давних времен?
-
> Возможно, в Оракле так и есть - конкретно систаксис и особенности > Оракла я не знаю, так что судить не могу.
В оракле много чего есть - он большой и толстый
> можно прямо в Insert делать автоинкремент без триггера INSERT > INTO MY_TABLE(ID, NAME)VALUES(NEXT VALUE FOR <SEQUENCE_NAME>, > 'VALUE');
ну да, ну да.
INSERT INTO foo(id,name) VALUES ((SELECT foo_seq.NEXTVAL FROM dual), 'NAME');
-
>Правильный-Вася (25.06.08 16:40) [24] >а в обратную сторону? собственно, этим и интересовался: в чем практическая необходимость декремента?
-
Игорь Шевченко © (25.06.08 22:50) [28]
>INSERT INTO foo(id,name) VALUES ((SELECT foo_seq.NEXTVAL FROM dual),'NAME'); теперь можно и без select from dual
-
> [24] Правильный-Вася (25.06.08 16:40) > а в обратную сторону?
Вроде как в оракловой секвенции есть параметр increment by, который может быть и отрицательным.
-
> есть параметр increment by, который может быть и отрицательным
может но нельзя одновременно сиквенс то вперед, то назад дергать
> в чем практическая необходимость декремента?
генераторы можно применить ведь не только для создания искусственных первичных ключей
а уж в однопользовательских системах это вообще простор для фантазии
-
>а уж в однопользовательских системах это вообще простор для фантазии
Ну почему же в однопользовательских ? У меня генераторы используются для нумерации документов в системе. Для каждого типа документов - свой генератор, сбрасываемый 1-го января если нужно.
-
> [32] Правильный-Вася (26.06.08 11:06) > но нельзя одновременно сиквенс то вперед, то назад дергать
Ну и слава богу! 8-) Они не для того и придуманы.
-
> Они не для того и придуманы.
узко смотришь это всего лишь глобальная переменная базы а как ее использовать, дело разработчика если он видит в ней смысл только для автоинкремента, его право но не стоит ограничивать других
-
> [35] Правильный-Вася (26.06.08 12:06) > узко смотришь
Так китаец я. 8-)
> это всего лишь глобальная переменная базы Это просто разный подход производителя к проблеме. Некторыми вещами производитель позволяет играться, другими нет. У оракла помнится около 200 настроечных параметров, у жарптицы меньше десятка вроде. У жарптицы возможны несколько одновременных транзакций в одной сессии у оракла 1. Плохо ли хорошо ли - не знаю, но вот от ораклистов как то меньше поступает вопросов на тему "я вставил запись - где она". Оракл не дает так лихо рулить сиквенсами, поэтому наверное у его пользователей поменьше и конфликтов при вставке. Хотя мне сложно придумать применение для игр с генератором при многопользовательской работе.
-
> Хотя мне сложно придумать применение для игр с генератором > при многопользовательской работе.
Да ну есть такие области применения. Например, когда учетная система - Распределенная СУБД, и ежедневно филиальные базы приносят на флешках на центральный офис и скидывают в общую папку. Кто их потом подгрузит в центральную базу - леший ведает. Вот и надо обеспечить НЕвозможность одновременной подгрузки одного и того же филиала с разных компов. Тут на помощь транзитивно-независимые переменные и приходят.
-
> Правильный-Вася (26.06.2008 11:06:32) [32]
Генераторы придуманы не для создания каких либо ключей и единственно только для генерации значений, вне транзакции, они вообще к полям отношения не имеют, а то что в ИБ/ФБ их используют для иммитации автоинкриметных полей так это из-за недостатков ИБ/ФБ.
-
> в ИБ/ФБ их используют для иммитации автоинкриметных полей > так это из-за недостатков ИБ/ФБ.
это как раз достоинство, а не недостаток автоинкрементные поля - зло, их невозможно использовать нормально
|