|
Создание триггера
|
|||
---|---|---|---|
#18+
Здравствуйте! Подскажите пожалуйста, ситуация такая. Имеется таблица с ключом ID и еще одно поле с порядковым номером. Он всегда должен быть порядковым, т.е. 1,2,3,4,5 и т.д. Допустим в ситуации с ID, если запись с номером 15 удалена, то следующая сгенерится с номером 16. В моем случае триггер должен понимать, что максимальное значение 14, поэтому следующая будет под номером 15. Данная возможность была реализована в delphi, а на данный момент переписываю ПО под firebird и всю логику переношу на ХП. Писал функцию: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Ну я думаю тут понятно. Находится максимальное значение, прибавляет 1 и возвращает результат. Собственно вопрос. Я так понимаю, что для данное цели разумней всего будет написать триггер, который будет отрабатывать по принципу генератора ID, то бишь перед вставкой. Или можно сам генератор для ID дописать, чтобы не создавать второй. Вот хотелось бы пример. Как это можно реализовать. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 16:36 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
А если удалена запись с номером 10 из 1,2,3..15? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 16:44 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Евгений СтронгЯ так понимаю, что для данное цели разумней всего будет написать триггер, который будет отрабатывать по принципу генератора ID, то бишь перед вставкой. Нет, для этой цели разумнее всего будет бумажный журнал регистрации порядковых номеров, откуда специально выделенный человек будет выдавать свободные номера по порядку для использования исполнителями под роспись. И это - не шутка. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2015, 17:17 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Евгений Стронг Код: pascal 1.
Как этот запрос поможет вам найти "дырку"? Есть более другой запрос, который это умеет, тоже с max/min. Но и с ним вы огребете проблем при многопользовательской работе. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 09:46 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Евгений Стронгразумней всего будет написать триггер, который будет отрабатывать по принципу генератора в данной ситуации не разумней, потому что триггеры работают в контексте транзакций, где произошло действия, и конкурирующих действий или изменений никак не видят. Евгений СтронгНаходится максимальное значение, прибавляет 1 грабли, на которые вы наступаете, известны уже несколько десятилетий. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 10:30 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovдля этой цели разумнее всего будет бумажный журнал регистрации порядковых номеров,+плюс явно описанный в соответствующем приказе по предприятию бизнес процесс. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 10:31 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНет, для этой цели разумнее всего будет бумажный журнал регистрации порядковых номеров, откуда специально выделенный человек будет выдавать свободные номера по порядку для использования исполнителями под роспись. И это - не шутка. Ну уж не перегибай. Бумажный вполне себе заменяется электронным, и даже автоматическим. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2015, 14:44 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Если важна именно сквозная нумерация (сильно похоже на требования налогового законодательства с формированием их реестров), то журнал - действительно лучший вариант. Мы в конце концов пришли именно к этому ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2015, 20:40 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Евгений Стронг, Если требуется "бездырочная" нумерация документов, то создай таблицу "дырок", куда будут записываться, при удалении, номера этих самых "дырок". При создании нового документа, ищи в таблице "дырок" запись с минимальным номером, а когда новый документ внесётся в базу, "дырку" удаляй. Как то так.... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 15:59 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
мастер_ёда> Если требуется "бездырочная" нумерация документов, то создай таблицу "дырок", > куда будут записываться, при удалении, номера этих самых "дырок". А может тогда уж "признак дырки"?.. И пользовать минимальный... Ы?.. ;-) -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 16:24 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
zirra, Можно и так. Но если запись удаляется (физически), то куда ставить признак дырки? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 16:30 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
мастер_ёда> Можно и так. Но если запись удаляется (физически), то куда ставить признак дырки? Вспомни dBase, создай поле DELETED и не удаляй физически... Главное, дочерний документ тоже не прибивать физически... -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 16:33 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
zirra, Это понятно. Но вопрос гипотетический: нужно в кортеже иметь бездырочную нумерацию элементов. Абстрагируйтесь от всяких счёт-фактур, ордеров и прочего бухгалтерского хлама :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 16:36 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
мастер_ёда> Это понятно. Но вопрос гипотетический: нужно в кортеже иметь бездырочную нумерацию элементов. > Абстрагируйтесь от всяких счёт-фактур, ордеров и прочего бухгалтерского хлама :) Да был ведь здесь топик про бездырочную нумерацию... Причём неоднократно... .... У нас в конторе была сквозная... А для долбоклюев из проверочных органов - сохраняли с/ф и остальное, что было "уничтожено"... С причиной отказа с любой стороны и печатями... -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 16:42 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
мастер_ёданужно в кортеже иметь бездырочную нумерацию элементов это значит - использовать генератор - никогда не использовать rollback (отмену), чтобы значение генератора было сохранено в записи - никогда не удалять записи. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 17:37 |
|
Создание триггера
|
|||
---|---|---|---|
#18+
Hello, Kdv! You wrote on 31 июля 2015 г. 17:39:34: Kdv> - никогда не использовать rollback (отмену) а обрывы? а падения? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2015, 17:39 |
|
|
start [/forum/topic.php?fid=40&msg=39016173&tid=1562692]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 163ms |
0 / 0 |