![]() |
|
Модераторы: Akella |
![]()
|
|
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Нигде не могу найти описания написания триггеров, точнее команд триггеров. В них вроде как я понял немного даже свой язык, т.е. не SQL применяется. А триггер надо срочно, помогите пожалуйста написать (а может за одно и ссылочку на документацию дадите)
Суть такова, при вставке в таблицу cars все записи должны копироватся в таблицу foo_cars я навоял вот такое, но выдает ошибку (да и вообще я в правильности написанного не уверен)
-------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
Добавлено @ 17:50 Скачай себе книгу Мир InterBase, 2 издание. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Alex, сапсибо. Скачал почитал и еще много чего почитал, вроде разобрался, но не могу понять где ошибка
это триггер на апдейт и надо чтоб в таблице foo_cars была только единная запись измененной строки = cars.id говорит SQL error code = -206. пробывал вместо 0 поставить NULL в условии, но тогда говорит Parsing Error -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Попробывал еще так
тоже блин ошибка -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
А так:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Dimyan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Alex, а так
я вот так еще попробывал, но так при изменении записи сама сработка триггера выдает ошибку
Это сообщение отредактировал(а) Dimyan - 23.2.2005, 11:11 -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
||||
|
|||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
Какую? -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Alex, ну я же ниже код привел
-------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
Давай так поступим: пришли мне свою базу на alex собака vingrad.ru Очень трудно моделировать твои ситуации мне на своей тестовой базе.
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Sleepy_PIP |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: 1 Всего: 12 |
блин. не очень понимаю чего ты хочешь. может вот этого: select count(foo_cars.id_foo) from foo_cars, cars into :cc where foo_cars.id = cars.id) IF(cc<> 0) а? -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
||||
|
|||||
| Dimyan |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Sleepy_PIP, я хочу чтоб при изменении данных в таблице cars эти данные по триггеру вносились в foo_cars но при этом если в foo_cars уже есть запись которая соответствует условию foo_cars.id = cars.id то она предварительно удалялась
я попробывал
только переставил into
и не работает при компиляции триггера выдается ошибка
-------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
||||||
|
|||||||
| Sleepy_PIP |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: 1 Всего: 12 |
ну это все от того, что 1. - я ошибся. а зря. 2. - ты так и не почитал доков по IB. т.к. конструкция с into должна быть такой как: select count(acc) vv from accounts where acc='222' into :cc; т.е. в твоем случае: select count(foo_cars.id_foo) from foo_cars, cars where foo_cars.id = cars.id into :cc; -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
||||||||
|
|||||||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 7 Всего: 162 |
Погоди, так тогда я не совсем понимаю, зачем так все накручивать ведь при добавлении в таблицу cars ты уже заносишь данные триггером в таблицу foo_cars. Значит, при изменении данных в cars измени данные и в foo_cars. Не нужно делать никаких удалений сделай обычный update. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Dimyan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 441 Регистрация: 12.1.2004 Где: Новосибирск Репутация: нет Всего: 4 |
Alex, нет проблем, но таблица foo_cars очищается каждые 5 минут и что я буду обновлять в пустой foo_cars при изменении записи в cars?
Sleepy_PIP, хоть убей прочитал что мог и про "Вложенный SQL" даже, нигде нормально не описываются как использовать SQL с условиями и ветвлениями алгоритма. А по InterBase\FireBird я вообще все свободное от работы время читаю свеже купленную "Мир InterBase" 3-ие издание ! Это сообщение отредактировал(а) Dimyan - 24.2.2005, 09:55 -------------------- Как хорошо ничего не делать, а потом еще немного отдохнуть :) |
|||
|
||||
| Sleepy_PIP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: 1 Всего: 12 |
Ух ты! уже 3-е издание! Спасибо за информацию. Ну ты победил синтакс. ошибку? PS: а я еще успешно пользовал полную док-цию от IB4 - там все расписано. Это сообщение отредактировал(а) Sleepy_PIP - 24.2.2005, 10:06 -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |