powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Формирование уникального идентификатора
25 сообщений из 33, страница 1 из 2
Формирование уникального идентификатора
    #38526025
OlegROA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за, возможно, глупый вопрос!

Со специфическими тонкостями Firebird`а не знаком (с ней не приходилось работать), поэтому, возможно, что то ускользнуло от меня.
В одной из FB-баз встретил в BI-триггерах код генерации уникального идентификатора записи, который любят использовать многие новички в SQL:
Код: sql
1.
SELECT MAX(id) FROM Table INTO :newId

Естественно, никаких блокировок БД/таблицы не производится.
Вот и стало интересно - это корректный код для Firebird`а, или его писал как раз новичек, не задумавшись о последствиях при многочисленных сетевых запросах?

Спасибо!
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526036
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROAэто корректный код для Firebird`а, или его писал как раз новичек, не
задумавшись о последствиях при многочисленных сетевых запросах?
Если это действительно генерация уникального идентификатора, то - нет, этот дебилизм
действительно работает только в монопольном режиме.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526037
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, OlegROA!
You wrote on 14 января 2014 г. 18:06:49:

OlegROA> Вот и стало интересно - это корректный код для Firebird`а,
> или его писал как раз новичек
примерно в 99,99% случаев это написано школьником.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526039
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROA,

А с какой СУБД работать приходилось?
Потому что никакой специфики тут нет, один г**код. Который, как верно подмечено, приведёт к коллапсу уже на 1.5 пользователях.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526040
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROAПрошу прощения за, возможно, глупый вопрос!

Со специфическими тонкостями Firebird`а не знаком (с ней не приходилось работать), поэтому, возможно, что то ускользнуло от меня.
В одной из FB-баз встретил в BI-триггерах код генерации уникального идентификатора записи, который любят использовать многие новички в SQL:
Код: sql
1.
SELECT MAX(id) FROM Table INTO :newId

Естественно, никаких блокировок БД/таблицы не производится.
Вот и стало интересно - это корректный код для Firebird`а, или его писал как раз новичек, не задумавшись о последствиях при многочисленных сетевых запросах?

Спасибо!
Ну раз FB его пропустил то значит корректный, но писали не задумавшись
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526045
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

Код: sql
1.
select * from rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, ...


тоже корректный, с точки зрения синтаксиса.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526095
Kotъ-Begemotъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпримерно в 99,99% случаев это написано школьником.


Из ДЮСШОР по боксу
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526100
Kotъ-Begemotъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSerym7m,

Код: sql
1.
select * from rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, rdb$relations, ...


тоже корректный, с точки зрения синтаксиса.

А уж к DROP DATABASE и вообще с точки зрения синтаксиса не придраться! ;-)
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526114
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery, Kotъ-Begemotъ

Да ладно вам
каков был вопрос, таков был и ответ
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526122
OlegROA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WildSeryOlegROA,

А с какой СУБД работать приходилось?
Потому что никакой специфики тут нет, один г**код. Который, как верно подмечено, приведёт к коллапсу уже на 1.5 пользователях.Много лет работал (и работаю) с десктопными СУБД, а из SQL - несколько лет с MSSQL и MySQL.
Понимаю, конечно, что для любого разработчика более-менее разбирающегося в SQL, вышеприведенный мною код - мягко говоря, некорректен.
Но, к примеру, в FB есть системные генераторы уникального идентификатора, которых нет в mssql и mysql.
Поэтому и подумал - может и BI-триггеры в Firebird имеют какую-либо специфику (типа неявной блокировки таблицы на время его выполнения)?
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526131
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROA, триггеры отрабатывают в контексте транзакции. Никаких блокировок.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526134
Фотография PEAKTOP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROAНо, к примеру, в FB есть системные генераторы уникального идентификатора, которых нет в mssql и mysql.
Да щаз! MySQL есть VARIABLES, которые можно и как генераторы приспособить.

OlegROAПоэтому и подумал - может и BI-триггеры в Firebird имеют какую-либо специфику (типа неявной блокировки таблицы на время его выполнения)?

Нет такого. Весь смысл генератора в том, что он транзитивно независим. Поэтому, независимо от уровня изоляции транзакции, он всегда вернет следующее значение.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526140
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, PEAKTOP!
You wrote on 14 января 2014 г. 19:16:57:

PEAKTOP> Весь смысл генератора в том, что он транзитивно
независим.
не нужно кидаться словами смысл которых не до конца понимаешь.
PEAKTOP> Поэтому,независимо от уровня изоляции транзакции, он всегда вернет следующее
> значение.да шо вы такое говорите?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526184
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROAв FB есть системные генераторы уникального идентификатора, которых нет в
mssql и mysql.
Это какие? Identity, autoincrement и sequences вполне существуют в MS SQL и MySQL, хотя
последние и не очень давно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526210
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROAМного лет работал (и работаю) с десктопными СУБДТам тоже НИКОГДА нельзя полагаться на max(id). Всё делается через вспомогательную таблицу счётчиков, запись которой сначала блокируется, затем увеличивается значение соотв. поля в ней и только после этого зхапись высвобождается, а полученное новое значение возвращается "потребителю".
Если у вас много лет получение нового Id идёт через max(...) и не случалось "странных дубликатов", то... всем бы так везло!
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526218
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код синтаксически корректен, но не более того.

а. можно использовать генераторы.
б. гуиды.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526538
OlegROA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovOlegROAв FB есть системные генераторы уникального идентификатора, которых нет в
mssql и mysql.Это какие? Identity, autoincrement и sequences вполне существуют в MS SQL и MySQL, хотя
последние и не очень давно.Классического Firebird генератора уникальных значений sequences, увы, в MySql нет!
Только autoincrement, которого иногда недостаточно.
Можно, конечно, эмулировать его автоинкрементируемым полем в отдельной таблице, но это уже другая тема.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526548
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROA,

Дмитрий имел ввиду sequence который появились в MS SQL 2012. В MySql этого конечно же нет.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526564
OlegROA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТаблоидOlegROAМного лет работал (и работаю) с десктопными СУБДТам тоже НИКОГДА нельзя полагаться на max(id).Можно, можно! Естественно, только в режиме полной блокировки рабочей таблицы. Чего нет, к примеру, в MySql.

ТаблоидЕсли у вас много лет получение нового Id идёт через max(...) и не случалось "странных дубликатов", то... всем бы так везло!Еще раз - такой алгоритм использую только в десктопных базах и только в режиме блокировки таблицы. А в SQL (mssql и mysql) использую, естественно, автоинкрементное поле. Но лично мне иногда в mysql не хватает классического sequences Firebird`а!
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526578
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROAТаблоидпропущено...Там тоже НИКОГДА нельзя полагаться на max(id).Можно, можно! Естественно, только в режиме полной блокировки рабочей таблицы.1) Залочивание всей таблицы, даже на короткое время, будет заклинивать ваш "перформанс", юзера непременно будут видеть это - и те, кто пытается её залочить, но должен ждать высвобождения, и те, кто ждут, пока её высвободит тот, кто определяет новый ИДшник.
В dBase-приложениях это проявляется уже на 20...30 юзерах, если они действительно что-то делают
2) вы, конечно же, будете определять max(id) по индексу (не делать же переход на последнюю запись! там ведь может - в результате всяких перетряхиваний таблицы - оказаться далеко не самый последний по значению Id) - ? И что будете делать при сломанном индексе (а это вполне обычная для десктопов вещь) ?
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526583
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рассуждать с т.з. сломанного индекса - это
что-то новое в современной проктологии.
Если БД (в т.ч. индексы в ней) поломаны -
то как получены значения любых столбцов
(в т.ч. PK) уже малоинтересно.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526605
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамРассуждать с т.з. сломанного индекса - это что-то новое в современной проктологии.Да тут не проктология, тут хуже: когда в xBase ломаются индексы, то происходит это очень тихо. Никаких сообщений в "логе" (которого вообще нет :)). И только через некоторое время будет вываливаться сообщение 'index corrupted', когда в таблицу уже натолкано энное кол-во некорректных данных (дублей, например).
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526610
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OlegROAМожно, можно!Давайте не будем пропагандировать говнокод и разжигать флуд на этом.
Спасибо за понимание.
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526615
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидкогда в xBaseЭто чудо инженерной мысли времен ЦаряГороха кому-то интересно в нашем разделе?
...
Рейтинг: 0 / 0
Формирование уникального идентификатора
    #38526630
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Да тут не проктология, тут хуже

Спрашивается, при чём тут тогда генераторы, PK и т.д.
А если сервак сдохнет - это ж ваще капец что будет...

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Формирование уникального идентификатора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]