![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Такой глуповатеньки вопросик по IBX7.x TIBDataSet
Rule © (2004-11-02 11:13:00)допустим я делаю выборку по нескольким таблицам, например
select a.id, a.name, b.id_table1, b.name from
table1 a, table2 b
where b.id_table1=a.id
так вот как мне сделать так чтоб модифицировались записи в нескольких таблицах, тоесть вопрос заключается, могу ли я написать в ModifySQL код, который модифицирует несколько таблиц (в нашем случае 2), если да то как это сделать ??
спасибо всем заранее ...
Rule (2004-11-03 11:33:00) [1]Все, сделал, у меня в представлении (вьюхе) собраны 6 таблиц и я сделал тригер он апдейт при котором обновляются все таблицы в зависимости от введенных данных и в конце стоит exit для того чтобы не возникало исключение что вью только для чтения, вот так я решил эту проблемму, спасибо всем кто помогал :)
Rule (2004-11-02 14:05:00) [2]Sergey_Masloff (02.11.04 13:56) [8]
хм... действительно хорошая идея по поводу вьюхи, спасибо большое
Sergey_Masloff (2004-11-02 13:56:00) [3]Rule © (02.11.04 11:46) [4]
>можно действиетльно в модифиSQL прописать вызов к хранимой >процещуре, вот только будет ли там работать вызов процедуры ?
Будет но будет вызывать Exception так как при выполнении обычного SQL сервер после выполнения сообщает сколько записей он проапдейтил а компонент проверяет их число - по его мнению оно должно быть ровно 1. 0 или больше 1 вызовет исключение. Именно его нужно перехватить и погасить. Я так делал - кривовато но работает надежно естественно нужно ловить только конкретное исключение.
Вариант 2 - Вьюха с триггерами. В стародавние времена с этим случались у Интербейса проблемы но сейчас клянутся что все пофиксили.
Sergey_Masloff (2004-11-02 13:48:00) [4]Rule © (02.11.04 11:46) [4]
>можно действиетльно в модифиSQL прописать вызов к хранимой >процещуре, вот только будет ли там работать вызов процедуры ?
Будет но будет вызывать Exception так как при выполнении обычного SQL сервер после выполнения сообщает сколько записей он проапдейтил а компонент проверяет их число - по его мнению оно должно быть ровно 1. 0 или больше 1 вызовет исключение. Именно его нужно перехватить и погасить. Я так делал - кривовато но работает надежно естественно нужно ловить только конкретное исключение.
Вариант 2 - Вьюха с триггерами. В стародавние времена с этим случались у Интербейса проблемы но сейчас клянутся что все пофиксили.
Rule (2004-11-02 12:11:00) [5]Johnmen © (02.11.04 12:00) [5]
2. Какая такая обработка при UPDATE ? Просто запрос.
я имел ввиду что в TIBDataSet событие OnUpdate в нутри него надо писать логическую часть обномления записи по несокльким таблицам ... вот я про что
Johnmen (2004-11-02 12:00:00) [6]>Rule © (02.11.04 11:43) [3]
1. Пробовать надо. А если не 2 а 6, то увы...
2. Какая такая обработка при UPDATE ? Просто запрос.
Rule (2004-11-02 11:46:00) [7]Sergey_Masloff (02.11.04 11:36) [2]
чегото не совсем понятно, но в общем принцип понял ... можно действиетльно в модифиSQL прописать вызов к хранимой процещуре, вот только будет ли там работать вызов процедуры ?
Rule (2004-11-02 11:43:00) [8]Johnmen © (02.11.04 11:29) [1]
1. Указать в добавок UpdateObject.
а чего, тогда сразу 2 апдейта выполняется или одик перекрывает другой, а если таблицы не 2 а 6?
OnUpdateRecord
хм-м-м, а не будет ли это тормозится, этож фактически получается обработка на стороне клиента
Sergey_Masloff (2004-11-02 11:36:00) [9]Или делать в Update вызов ХП и гасить эксепшн который возникнет когда сервер не пришлет весточку что он обновил ровно 1 запись.
Johnmen (2004-11-02 11:29:00) [10]Нет.
Но можно попробовать
1. Указать в добавок UpdateObject.
2. Прописать OnUpdateRecord.