Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дерево 
:(
    Опции темы
setnull
Дата 4.2.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



Все здравствуйте.

Ситуация...

Есть древовидная сущность

Код

my_table
   id,
   parent
   ....
   ....


Как осуществить контроль цикличности наследования? Т.е. чтоб "предком" не оказался "потомок"?

В трггере я не могу осуществить доступ к редактируемой таблице...
Че делать?

Спасибо!

Это сообщение отредактировал(а) setnull - 4.2.2009, 17:33
PM MAIL   Вверх
Zloxa
Дата 4.2.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



В общем случае, пожалуй никак.

если id суррогатный ключ, проще всего, пожалуй, было бы сделать fk по parent на id и поставить чек parent < id. Кривовато, косовато, но жить, по идее будет.

Ну а как мутацию обходить, думаю учить не надо?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
setnull
Дата 5.2.2009, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: 1
Всего: 1



Цитата(Zloxa @ 4.2.2009,  18:30)
Ну а как мутацию обходить, думаю учить не надо?

быть может, я просто не совсем ориентруюсь в терминологии, но что-то мне подсказывает, что послушал бы с удовольствием....
PM MAIL   Вверх
DimW
Дата 5.2.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(setnull @  5.2.2009,  10:16 Найти цитируемый пост)
быть может, я просто не совсем ориентруюсь в терминологии


речь идет о:

Цитата(setnull @  4.2.2009,  17:32 Найти цитируемый пост)
В трггере я не могу осуществить доступ к редактируемой таблице


Добавлено через 7 минут
читаешь, вникаешь, задаешь вопросы если что то не понятно  http://www.firststeps.ru/sql/oracle/ шаги 112, 117
потом читаешь про автономную транзакцию, читаешь про автономный тригер и чем он отличается от обыкновенного.

PM MAIL ICQ   Вверх
Zloxa
Дата 5.2.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(DimW @  5.2.2009,  10:24 Найти цитируемый пост)
читаешь про автономную транзакцию, читаешь про автономный тригер 

Автономка не увидит в нашей таблице наших не закомиченных даных, тут она не помошница.
Автономный триггер - чесгря не понял о чем речь.. для меня это чтото новое ;)

Испльзуя автономные транзакции из триггера, следует помнить, что вызывающая транзакция , может и откатиться, в то время, как автономная - зафиксируется. Так же следует помнить, что row триггеры могут вызываться более одного раза для каждой строки. Область применения автономных транзакций в триггерах - очень узка.

Avoiding Mutating Tables
Про мутирующие таблицы
Еще есть вариант с созданием вьюхи с instead of триггером. Отчего Том о нем не пишет, в контексте предотвращения мутаций, мне не понятно, видать есть ньюансы.
Цитата(DimW @  5.2.2009,  10:24 Найти цитируемый пост)
http://www.firststeps.ru/sql/oracle/ шаги 112, 117

В шаге 117 меня очень насторожил код первого же триггера. В after insert триггере используется :old.id
Цитата

A trigger fired by an INSERT statement has meaningful access to new column values only. Because the row is being created by the INSERT, the old values are null.

Accessing Column Values in Row Triggers 


Это сообщение отредактировал(а) Zloxa - 5.2.2009, 11:38


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DimW
Дата 5.2.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(Zloxa @  5.2.2009,  11:34 Найти цитируемый пост)
Автономка не увидит в нашей таблице наших не закомиченных даных, тут она не помошница.

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

Цитата(Zloxa @  5.2.2009,  11:34 Найти цитируемый пост)
Автономный триггер - чесгря не понял о чем речь..

тригер с прагмой: autonomous_transaction;

вобще использование атономки это один из вариантов с учетов ньюансов, просто сообщение оформил так что она является лекарством. всетаки внимание стоит обратить в первую очередь на операторный тригер.


Цитата(Zloxa @  5.2.2009,  11:34 Найти цитируемый пост)
Еще есть вариант с созданием вьюхи с instead of триггером.

Цитата(Zloxa @  5.2.2009,  11:34 Найти цитируемый пост)
видать есть ньюансы.

наверное дело в том что триггер instead of должен вызвать процедуру которая сделает все нужные проверки, но для того что бы ее вызвать нафиг ненадо создавать вьюху, разви что если очень хочиться тригеры заюзать.

Это сообщение отредактировал(а) DimW - 6.2.2009, 13:03
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0861 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.