Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
триггер на автоинкремент в той же записи
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть таблица с первичным ключом (автоинкремент) и вспомогательным ключом: Код: sql 1. 2. 3. 4. 5. 6. Есть задача: При вставке записи: - если IDbis задан - вносить его. - если IDbis не задан - задать его равным сгенерированному ID. Самый очевидный путь - поставить триггер. Триггер проверяет IDbis на NULL, и если да - присваивает IDbis=ID. Но если триггер задать ДО вставки, он логично присваивает IDbis = 0 (значение ID ещё не сгенерировано), а если триггер задать ПОСЛЕ вставки, то выдаётся ошибка: Can't update table 'таблица1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. То есть нельзя модифицировать вставляемую строку в момент самой вставки. Пока решил задачу варварским способом: в приложении делаю вставку, получаю ID, и вторым оператором модернизирую запись. Никто не подскажет здравый путь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2017, 14:13 |
|
||
|
триггер на автоинкремент в той же записи
|
|||
|---|---|---|---|
|
#18+
romtПока решил задачу варварским способом: в приложении делаю вставку, получаю ID, и вторым оператором модернизирую запись.Вполне нормальный путь, если нужно действительно отдельное поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2017, 14:36 |
|
||
|
триггер на автоинкремент в той же записи
|
|||
|---|---|---|---|
|
#18+
Нормальный, но: 1) В умных книжках пишут, что логика базы данных должна быть максимально в самой базе данных. Т.е. лучше максимально использовать триггеры и хранимые процедуры. Что и пытаюсь делать. А тут не выходит. 2) Запрос плюс триггер будут работать быстрее чем два запроса. (Или даже три запроса? Получение последнего ID - тоже запрос?) 3) Просто обидно: задачка-то вроде простая. А выходит, что не решается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2017, 15:06 |
|
||
|
триггер на автоинкремент в той же записи
|
|||
|---|---|---|---|
|
#18+
Логику такого уровня следует реализовывать в рамках хранимой процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2017, 15:23 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39405371&tid=1830907]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 359ms |

| 0 / 0 |
