|
|
|
Прошу помощи с триггером.
|
|||
|---|---|---|---|
|
#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, 20:52:50 |
|
||
|
Прошу помощи с триггером.
|
|||
|---|---|---|---|
|
#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:21:22 |
|
||
|
Прошу помощи с триггером.
|
|||
|---|---|---|---|
|
#18+
Рустам, спасибо за ответ. Косяк нашёлся, но сообщение об ошибке было неинформативным и указывало на последний END. Код: sql 1. Точки с запятой после первого END быть не должно. Убрал её - и всё пошло. авторТакое лучше делать не for-select-ом, а простым запросом Insert Into Select From. Что-то до меня никак не дойдёт, как это может выглядеть. Записей в селекте будет много, а насколько я понимаю, Insert into select from применяется, когда селект возвращает единственную запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 21:27:28 |
|
||
|
Прошу помощи с триггером.
|
|||
|---|---|---|---|
|
#18+
Наоборот, по возможности юзай insert into as select from ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 21:37:42 |
|
||
|
Прошу помощи с триггером.
|
|||
|---|---|---|---|
|
#18+
DelphiCoder_1980> указывало на последний END. DelphiCoder_1980> Точки с запятой после первого END быть не должно Ну, я тоже на это сразу подумал. Но сервер подсказывает "последний оператор" - мог бы и сам догадаться. > Что-то до меня никак не дойдёт, как это может выглядеть Я могу, конечно, готовый запрос тебе написать. Но он настолько примитивный, что лучше давай сам. > Записей в селекте будет много, а насколько я понимаю, > Insert into select from применяется, когда селект возвращает единственную запись. Нет, оператор допускает множественную вставку (в отличие от обычного Insert Values на данный момент). Соответственно, поскольку записей много - лучше использовать его, чем гнать "курсор", хотя разница и будет не очень большая (в Firebird), скорее всего. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2014, 22:02:48 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=98&tid=1563685]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
358ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 676ms |

| 0 / 0 |
