Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > многотабличный Update


Автор: Wanderer2019 10.2.2005, 16:22
Подскажите кто нить.. как запустить Update на много таблиц! Причем связанных по ключам.
Т.Е. что нибудь вроде:
Код

UPDATE TABLE1,TABLE2 SET TABLE1.field1='123',TABLE2=field1='234' WHERE TABLE1.field1=TABLE2.field2

вышенаписанный код не работает... просто написал для пояснения...

Автор: Paradox 14.2.2005, 13:21
в принипе можно попробовать решить такую проблеиу тригерами на апдейт, но не думаю что это хорошее решение - просто сразу в голову пришло smile

Автор: RoMka 14.2.2005, 16:39
а какое может быть езё решение? вешаешь триггер на table1, чтобы при update апдейтить table2 при выполнении соответствующих условий...

Автор: Sleepy_PIP 22.2.2005, 15:37
Цитата(Wanderer2019 @ 10.2.2005, 16:22)
Подскажите кто нить.. как запустить Update на много таблиц! Причем связанных по ключам.
Т.Е. что нибудь вроде:
Код

UPDATE TABLE1,TABLE2 SET TABLE1.field1='123',TABLE2=field1='234' WHERE TABLE1.field1=TABLE2.field2

вышенаписанный код не работает... просто написал для пояснения...

не понял - а что мешает сделать 2 последовательных апдейта в одной транзакции?
я не въехал в проблемму??

Автор: AntonSaburov 22.2.2005, 20:26
Я честно говоря тоже не понял проблему.

Сделай в одной процедуре такое или в одном запросе - открываем транзакцию и в конце закрываем для надежности.

Автор: Sleepy_PIP 23.2.2005, 20:33
Цитата(AntonSaburov @ 22.2.2005, 20:26)
Я честно говоря тоже не понял проблему.

Сделай в одной процедуре такое или в одном запросе - открываем транзакцию и в конце закрываем для надежности.

сорри, ты наверное описался ...
закрыть надо не для надежности, а обязательно. если хотим увидеть изменения.

Автор: AntonSaburov 24.2.2005, 13:07
Цитата(Sleepy_PIP @ 23.2.2005, 20:33)
сорри, ты наверное описался ...

Я имел в виду, чтобы не было промежуточных результатов записано. Т.е. надо читать
открываем транзакцию и в конце закрываем. Для надежности.

Автор: Hroft 28.2.2005, 11:18
Может, так ему удобнее. Если не хочется отдельно апдейтить, я бы сделал view с нужными полями, и на него повесил триггер instead of update. К тому же с помощью вьюшки еще и фасад создается над всей структурой таблиц. Сколько раз уже пригодилось: на начальной стадии структура базы менялась, но на моих программах это никак не отражалось, только саму вьюшку и триггер менять приходилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)