|
|
|
триггер на автоинкремент в той же записи
|
|||
|---|---|---|---|
|
#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=39404948&tid=1830907]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 452ms |

| 0 / 0 |
