
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.04.2014, 20:52:50
|
|||
|---|---|---|---|
|
|||
Прошу помощи с триггером. |
|||
|
#18+
Приветствую уважаемых коллег. Решил использовать в новой БД на FB 2.5 триггеры (не только для автогенерации идентификаторов), но опыта в них у меня маловато. Написал в скрипте создания ряд триггеров. При выполнении скрипта из FlameRobin валится с ошибкой 104 вот этот триггер: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Прошу подсказать, корректен ли синтаксис этого триггера (без учета названия таблиц)? Я пытаюсь при создании записи в таблице DOCUMENTS пробежать таблицу MATERIALNOMENCLATURE и создать по числу записей в ней записи в таблице MATERIALGOING. Годится ли такой подход для этой задачи, или надо написать как-то по-другому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.04.2014, 21:21:22
|
|||
|---|---|---|---|
|
|||
Прошу помощи с триггером. |
|||
|
#18+
DelphiCoder_1980> валится с ошибкой 104 вот этот триггер: Текст ошибки-то приведи полный. А-то навскидку ошибку синтаксиса не видно. > FOR select m_id from MATERIALNOMENCLATURE into :MATID > DO begin > INSERT INTO MATERIALGOING (G_MATERIAL, G_COUNT, G_DOCUMENT) > VALUES (:MATID, 0, :DOCID); > END; Такое лучше делать не for-select-ом, а простым запросом Insert Into Select From. > Годится ли такой подход для этой задачи, или надо написать как-то по-другому? Для постановки-то годится, но надо саму обсуждать, ИМХО. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.04.2014, 21:27:28
|
|||
|---|---|---|---|
|
|||
Прошу помощи с триггером. |
|||
|
#18+
Рустам, спасибо за ответ. Косяк нашёлся, но сообщение об ошибке было неинформативным и указывало на последний END. Код: sql 1. Точки с запятой после первого END быть не должно. Убрал её - и всё пошло. авторТакое лучше делать не for-select-ом, а простым запросом Insert Into Select From. Что-то до меня никак не дойдёт, как это может выглядеть. Записей в селекте будет много, а насколько я понимаю, Insert into select from применяется, когда селект возвращает единственную запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.04.2014, 21:37:42
|
|||
|---|---|---|---|
|
|||
Прошу помощи с триггером. |
|||
|
#18+
Наоборот, по возможности юзай insert into as select from ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.04.2014, 22:02:48
|
|||
|---|---|---|---|
|
|||
Прошу помощи с триггером. |
|||
|
#18+
DelphiCoder_1980> указывало на последний END. DelphiCoder_1980> Точки с запятой после первого END быть не должно Ну, я тоже на это сразу подумал. Но сервер подсказывает "последний оператор" - мог бы и сам догадаться. > Что-то до меня никак не дойдёт, как это может выглядеть Я могу, конечно, готовый запрос тебе написать. Но он настолько примитивный, что лучше давай сам. > Записей в селекте будет много, а насколько я понимаю, > Insert into select from применяется, когда селект возвращает единственную запись. Нет, оператор допускает множественную вставку (в отличие от обычного Insert Values на данный момент). Соответственно, поскольку записей много - лучше использовать его, чем гнать "курсор", хотя разница и будет не очень большая (в Firebird), скорее всего. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1563685]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
147ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 388ms |

| 0 / 0 |
