|
|
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за, возможно, глупый вопрос! Со специфическими тонкостями Firebird`а не знаком (с ней не приходилось работать), поэтому, возможно, что то ускользнуло от меня. В одной из FB-баз встретил в BI-триггерах код генерации уникального идентификатора записи, который любят использовать многие новички в SQL: Код: sql 1. Естественно, никаких блокировок БД/таблицы не производится. Вот и стало интересно - это корректный код для Firebird`а, или его писал как раз новичек, не задумавшись о последствиях при многочисленных сетевых запросах? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:03:07 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROAэто корректный код для Firebird`а, или его писал как раз новичек, не задумавшись о последствиях при многочисленных сетевых запросах? Если это действительно генерация уникального идентификатора, то - нет, этот дебилизм действительно работает только в монопольном режиме. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:08:38 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Hello, OlegROA! You wrote on 14 января 2014 г. 18:06:49: OlegROA> Вот и стало интересно - это корректный код для Firebird`а, > или его писал как раз новичек примерно в 99,99% случаев это написано школьником. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:08:41 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROA, А с какой СУБД работать приходилось? Потому что никакой специфики тут нет, один г**код. Который, как верно подмечено, приведёт к коллапсу уже на 1.5 пользователях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:09:12 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROAПрошу прощения за, возможно, глупый вопрос! Со специфическими тонкостями Firebird`а не знаком (с ней не приходилось работать), поэтому, возможно, что то ускользнуло от меня. В одной из FB-баз встретил в BI-триггерах код генерации уникального идентификатора записи, который любят использовать многие новички в SQL: Код: sql 1. Естественно, никаких блокировок БД/таблицы не производится. Вот и стало интересно - это корректный код для Firebird`а, или его писал как раз новичек, не задумавшись о последствиях при многочисленных сетевых запросах? Спасибо! Ну раз FB его пропустил то значит корректный, но писали не задумавшись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:09:15 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
m7m, Код: sql 1. тоже корректный, с точки зрения синтаксиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:10:47 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийпримерно в 99,99% случаев это написано школьником. Из ДЮСШОР по боксу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:39:54 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
WildSerym7m, Код: sql 1. тоже корректный, с точки зрения синтаксиса. А уж к DROP DATABASE и вообще с точки зрения синтаксиса не придраться! ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:41:16 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
WildSery, Kotъ-Begemotъ Да ладно вам каков был вопрос, таков был и ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:50:52 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
WildSeryOlegROA, А с какой СУБД работать приходилось? Потому что никакой специфики тут нет, один г**код. Который, как верно подмечено, приведёт к коллапсу уже на 1.5 пользователях.Много лет работал (и работаю) с десктопными СУБД, а из SQL - несколько лет с MSSQL и MySQL. Понимаю, конечно, что для любого разработчика более-менее разбирающегося в SQL, вышеприведенный мною код - мягко говоря, некорректен. Но, к примеру, в FB есть системные генераторы уникального идентификатора, которых нет в mssql и mysql. Поэтому и подумал - может и BI-триггеры в Firebird имеют какую-либо специфику (типа неявной блокировки таблицы на время его выполнения)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 19:03:23 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROA, триггеры отрабатывают в контексте транзакции. Никаких блокировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 19:09:29 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROAНо, к примеру, в FB есть системные генераторы уникального идентификатора, которых нет в mssql и mysql. Да щаз! MySQL есть VARIABLES, которые можно и как генераторы приспособить. OlegROAПоэтому и подумал - может и BI-триггеры в Firebird имеют какую-либо специфику (типа неявной блокировки таблицы на время его выполнения)? Нет такого. Весь смысл генератора в том, что он транзитивно независим. Поэтому, независимо от уровня изоляции транзакции, он всегда вернет следующее значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 19:10:51 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Hello, PEAKTOP! You wrote on 14 января 2014 г. 19:16:57: PEAKTOP> Весь смысл генератора в том, что он транзитивно независим. не нужно кидаться словами смысл которых не до конца понимаешь. PEAKTOP> Поэтому,независимо от уровня изоляции транзакции, он всегда вернет следующее > значение.да шо вы такое говорите? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 19:19:33 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROAв FB есть системные генераторы уникального идентификатора, которых нет в mssql и mysql. Это какие? Identity, autoincrement и sequences вполне существуют в MS SQL и MySQL, хотя последние и не очень давно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 20:02:54 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROAМного лет работал (и работаю) с десктопными СУБДТам тоже НИКОГДА нельзя полагаться на max(id). Всё делается через вспомогательную таблицу счётчиков, запись которой сначала блокируется, затем увеличивается значение соотв. поля в ней и только после этого зхапись высвобождается, а полученное новое значение возвращается "потребителю". Если у вас много лет получение нового Id идёт через max(...) и не случалось "странных дубликатов", то... всем бы так везло! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 20:29:02 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
код синтаксически корректен, но не более того. а. можно использовать генераторы. б. гуиды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 20:42:03 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovOlegROAв FB есть системные генераторы уникального идентификатора, которых нет в mssql и mysql.Это какие? Identity, autoincrement и sequences вполне существуют в MS SQL и MySQL, хотя последние и не очень давно.Классического Firebird генератора уникальных значений sequences, увы, в MySql нет! Только autoincrement, которого иногда недостаточно. Можно, конечно, эмулировать его автоинкрементируемым полем в отдельной таблице, но это уже другая тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 09:20:16 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROA, Дмитрий имел ввиду sequence который появились в MS SQL 2012. В MySql этого конечно же нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 09:29:14 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
ТаблоидOlegROAМного лет работал (и работаю) с десктопными СУБДТам тоже НИКОГДА нельзя полагаться на max(id).Можно, можно! Естественно, только в режиме полной блокировки рабочей таблицы. Чего нет, к примеру, в MySql. ТаблоидЕсли у вас много лет получение нового Id идёт через max(...) и не случалось "странных дубликатов", то... всем бы так везло!Еще раз - такой алгоритм использую только в десктопных базах и только в режиме блокировки таблицы. А в SQL (mssql и mysql) использую, естественно, автоинкрементное поле. Но лично мне иногда в mysql не хватает классического sequences Firebird`а! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 09:38:53 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROAТаблоидпропущено...Там тоже НИКОГДА нельзя полагаться на max(id).Можно, можно! Естественно, только в режиме полной блокировки рабочей таблицы.1) Залочивание всей таблицы, даже на короткое время, будет заклинивать ваш "перформанс", юзера непременно будут видеть это - и те, кто пытается её залочить, но должен ждать высвобождения, и те, кто ждут, пока её высвободит тот, кто определяет новый ИДшник. В dBase-приложениях это проявляется уже на 20...30 юзерах, если они действительно что-то делают 2) вы, конечно же, будете определять max(id) по индексу (не делать же переход на последнюю запись! там ведь может - в результате всяких перетряхиваний таблицы - оказаться далеко не самый последний по значению Id) - ? И что будете делать при сломанном индексе (а это вполне обычная для десктопов вещь) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 09:52:13 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Рассуждать с т.з. сломанного индекса - это что-то новое в современной проктологии. Если БД (в т.ч. индексы в ней) поломаны - то как получены значения любых столбцов (в т.ч. PK) уже малоинтересно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 09:56:43 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамРассуждать с т.з. сломанного индекса - это что-то новое в современной проктологии.Да тут не проктология, тут хуже: когда в xBase ломаются индексы, то происходит это очень тихо. Никаких сообщений в "логе" (которого вообще нет :)). И только через некоторое время будет вываливаться сообщение 'index corrupted', когда в таблицу уже натолкано энное кол-во некорректных данных (дублей, например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 10:16:09 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
OlegROAМожно, можно!Давайте не будем пропагандировать говнокод и разжигать флуд на этом. Спасибо за понимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 10:19:32 |
|
||
|
Формирование уникального идентификатора
|
|||
|---|---|---|---|
|
#18+
Таблоидкогда в xBaseЭто чудо инженерной мысли времен ЦаряГороха кому-то интересно в нашем разделе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 10:21:32 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38526025&tid=1563975]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 498ms |

| 0 / 0 |
