![]() |
|
Модераторы: LSD |
![]()
|
|
| setnull |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 3.7.2007 Репутация: 1 Всего: 1 |
Все здравствуйте!!!
Как в триггере узнать, замутирована ли та или иная таблица? Спасибо!!! |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
попытаться выбраться и обработать -04091
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Не слышал о таком способе, но для избежания ошибки мутации можно использовать триггеры "AFTER" или использовать autonomous transactions.
|
|||
|
||||
| DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
как?
конечную цель пояснить можете? |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Интересно, я решал с помощью autonomous transactions. Насчет AFTER тригеров у меня теоретические знания, на сайте было написано, проверю на днях. Добавлено через 3 минуты и 46 секунд
http://www.dba-oracle.com/t_avoiding_mutat...table_error.htm |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
||||
|
||||
| setnull |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 3.7.2007 Репутация: 1 Всего: 1 |
К примеру, есть внешний ключ с каскадным удалением. В триггерах (delete) дочерней таблицы нужно узнать (либо) обновить некоторою информацию по родительской записи. При этом если инициирующим действием будет удаление родительской записи - то все... Можно, конечно и отловить исключение, но вообще можно зарание узнать? Или, также, если пишешь процедуру, реализовывающую более широкую задачу, которую, в свою очередь, среди прочего, можно вызывать и в триггере, и нужно в ней знать состояние по таблицам... Это сообщение отредактировал(а) setnull - 27.10.2009, 16:15 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
||||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
В свое время пытался применить такой подход: В полцедуре определил default параметры, и если эти параметры не определены, вычитывал их из базы. если процедуру запускаю из триггера, то заполняю параметры. Добавлено @ 16:24 azesmcar, я бы на месте DimW использовал бы не выражение "быть может", а "СТО ПУДОВ" Это сообщение отредактировал(а) Zloxa - 27.10.2009, 16:25 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
||||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
вы имеете ввиду на этапе разработки? если так по это просто - мутация это появление не консистентных данных, это естетственный процесс который происходит при использовании DML в промежутке между началом выполнения оператора и его завершением, единственное место где на это можно нарваться это строковые тигеры, т.к. один оператор может изменять больше одной позиции в таблице, поэтому при реализации логики в тригерах нужно помнить какие таблицы могут быть задействованы в данной транзакции, любая попытка обратиться к ним приведет к ошибке - которая всего лишь предупреждает вас что данные уже не такие как были до выполнения действия. если вы это понимаете то есть возможность забить на заботы сервера и воспользоваться autonomous transactions. это как вариан, но я так не делаю и вам не советую! проше реализовать всю вашу логику в процедурах и пользоваться ими для удаления и обновления статистики. Добавлено через 4 минуты и 41 секунду да фиг знает может просто ###статья была |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
||||
|
||||
![]()
|
| Правила форума "Oracle" | |
|
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Oracle | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |