-
Вчера писал рецензию на дипломную работу и, просматривая раздел записки с описанием скрипта создания БД, наткнулся на генераторы, триггеры After/Befor, UDF-ки и прочие интербэйзовые штучки. Был зело удивлен
-
а ты уверен, что этот диплом не срисован с интербейза? а то текст - одно, а программа может быть и другой
-
> генераторы, триггеры After/Befor, UDF-ки и прочие интербэйзовые > штучки.
С какого перепуга они интербэйзовские?
-
> С какого перепуга они интербэйзовские?
генератора в стандарте нет, а в поздних редакциях это вообще сиквенсы udf в стандарте нет, хотя в некоторых субд они присутствуют, имхо, раньше они появились в Ib кстати, триггеры в стандарте тоже отсутствовали, емнип по крайней мере, "до/после", да еще и по нескольку штук каждого вида на таблицу с указанием порядка срабатывания
-
> Правильный-Вася (24.06.08 11:41) [3] > генератора в стандарте нет, а в поздних редакциях это вообще сиквенсы
Сиквенс это псевдоним генератора.
> MsGuns © (24.06.08 11:20)
Да, стараются разработчики "недобазу", как тут кто-то говорил, привести в человеческий вид.
-
> Сиквенс это псевдоним генератора.
это в FB 2 для совместимости со стандартом, когда эти сиквенсы все-таки появились
-
в смысле, когда появились в стандарте
-
> это в FB 2 для совместимости со стандартом, когда эти сиквенсы > все-таки появились
Что это "это"? И что за "стандарт"? Где его почитать?
-
>Johnmen © (24.06.08 16:40) [4] >Да, стараются разработчики "недобазу", как тут кто-то говорил, привести в человеческий вид.
Интересно? а кто-нибудь из наших с нею работал ? Было бы любопытно услышать впечатления
-
-
я работал немного. то была бд онлайнового сервиса (честно говоря игрухи) в которой велась некая статистика. меня попросили её несколько расширить. попробовал начать с серверной логики - там голяк (4.х версия была) пришлось писать обраьотку с клиента. начал с dbexpress, вроде все нормальноЮ, без проблем. пока не встретил пятерку. там авторизация была сделана как-то по другому и без костылей работать не удавалось. перешел на прямой доступ (пакет от crlab). вот там все в шоколаде.
-
-
> А первый вопрос?
ключевое слово "сиквенс" появилось в FB как синоним генератора, потому как генератора в стандарте нет, а а сиквенс - есть, а суть - одинаковая
> Что конкретно из этой ссылки?
все ansi-iso*1999.pdf
-
> все ansi-iso*1999.pdf
Там во всех в них про стандарт "сиквенса"?
> а суть - одинаковая
Кто-то разве возражал?
-
насколько я знаю, генераторов, равно как и sequence и прочих autoincrement в стандарте не было ? Или я совсем старый стандарт читал ?
-
> MsGuns © (24.06.08 11:20) > Был зело удивленА че удивительного - папа у обоих изделий один: Джим Старки. Его, по-моему, с MySQL 3.25 к разработке привлекли, видать маркетологи просчитали, что в комплекте с Джимом Старки MySQL Sun-у можно подороже загнать :) Кто же мог подумать, что он свалит, чтобы разрабатывать свою СУБД, которая "будет работать в облаках" (смейтесь, смейтесь - дословная цитата: http://www.firebirdnews.org/?p=1742) Скажу даже более - читал релизноты MySQL 6.0, который щаз в состоянии альфы. По тактико-техническим характеристикам шестерка уже из СУБД становиться в ряд с SQL-серверами (транзитивность-многоверсионность-изолированность-"ручной контроль транзакций"). Так что у нашего Птица появиться еще один конкурент. > насколько я знаю, генераторов, равно как и sequence и прочих autoincrement в стандарте не было ?Дык, кто ж его видел этот стандарт - самому интересно было поглядеть на эти самые SEQUENCE. Дима Еманов просто объявил - теперь есть синоним SEQUENCE. Возможно, в Вулкане (Firebird 3.0) снесем генераторы на фиг, так что вот вам время, чтобы плавно перейти на новый синтаксис SEQUENCE, типа это все давно обсуждалось и решение принято. Где именно обсуждалось - гугль так и не ответил. Видать, у них(разработчиков) между собой.
-
FB идет за синтаксисом Oracle - update...returning, sequence и т.д. И ПРАВИЛЬНО делает
-
> Возможно, в Вулкане (Firebird 3.0) снесем генераторы на > фиг, так что вот вам время, чтобы плавно перейти на новый > синтаксис SEQUENCE, типа это все давно обсуждалось и решение > принято.
SEQUENCE только и умеет что "1" прибавлять. Генераторы же прибавляют и убавляют что угодно, тем самым много более полезны. Имхо, оставят :)
-
>Loginov Dmitry © (25.06.08 00:43) [17] >Генераторы же прибавляют и убавляют что угодно, тем самым много более полезны. если не сложно, приведите пример выгоды от такого поведения? ни капли сарказма - действительно, интересно
-
Сиквенсы можно "вручную" устанавливать или сбрасывать как генераторы ? Если да, не вижу преимуществ вторых перед первыми.
-
> И ПРАВИЛЬНО делает
Оракл - ацтой, 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]
Генераторы придуманы не для создания каких либо ключей и единственно только для генерации значений, вне транзакции, они вообще к полям отношения не имеют, а то что в ИБ/ФБ их используют для иммитации автоинкриметных полей так это из-за недостатков ИБ/ФБ.
-
> в ИБ/ФБ их используют для иммитации автоинкриметных полей > так это из-за недостатков ИБ/ФБ.
это как раз достоинство, а не недостаток автоинкрементные поля - зло, их невозможно использовать нормально
-
> автоинкрементные поля - зло, их невозможно использовать > нормально
Главный программист планеты, Б.Гейтс, с тобой не согласен. А я с ним заодно...
-
> [37] PEAKTOP © (26.06.08 14:49)
Я честно говоря не особо понял зачем при этом рулить туда-сюда генератором, но наверное ты прав - найти применение можно. Но для меня трудно. 8-)
-
> Главный программист планеты, Б.Гейтс > А я с ним заодно...
"не сотвори себе кумира"
-
> "не сотвори себе кумира"
Хм... А где про кумира?
-
> Правильный-Вася (26.06.2008 15:26:39) [39]
Использовать нельзя, а иммитировать можно. У тебя все в порядке с логикой? А еше Правильный
-
> У тебя все в порядке с логикой?
у меня в порядке, а у тебя проблемы с восприятием написанного перечитай еще раз не все, что можно делать, стоит делать
|