![]() |
|
Модераторы: LSD |
![]()
|
|
| mgukov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
Есть 2 таблице - ЗАКАЗ и ВЫДАЧА, как показано на рисунке. Ключевое поле одной таблицы является ключевым и внешним полем другой таблицы. Мне нужен триггер который при вставке строки в первую таблицу, добавляет строку во вторую. Проблема с первичным ключем. Подскажите как можно реализовать такой триггер?
Это сообщение отредактировал(а) mgukov - 27.12.2009, 19:42 Присоединённый файл ( Кол-во скачиваний: 7 )
shema.jpg 29,65 Kb |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
если я правильно понял, то триггер должен выглядеть следующим образом:
Это сообщение отредактировал(а) v2v - 27.12.2009, 23:38 |
|||
|
||||
| mgukov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
Именно так я и делал, однако возникает ошибка:
Error starting at line 4 in command: INSERT INTO ЗАКАЗ VALUES(100, 'не оплачен', NULL, 100, 104) Error report: SQL Error: ORA-02291: integrity constraint (USER1.RELATION_6) violated - parent key not found ORA-06512: at "USER1.TIA_ЗАКАЗ", line 2 ORA-04088: error during execution of trigger 'USER1.TIA_ЗАКАЗ' 02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found" *Cause: A foreign key value has no matching primary key value. *Action: Delete the foreign key or add a matching primary key. Так как в таблице ВЫДАЧА поле заказ_ид является внешним ключем, то при добавлении в нее новой записи с :new.заказ_ид, oracle пытается найти это значение в таблице ЗАКАЗ, но этого (:new.заказ_ид) значения там еще нет. Это сообщение отредактировал(а) mgukov - 28.12.2009, 00:11 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
есть. если триггер after, как написал v2v.
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| mgukov |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 22.3.2009 Репутация: нет Всего: нет |
Да, действительно.
Всем спасибо Это сообщение отредактировал(а) mgukov - 28.12.2009, 02:13 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
меня в этой ситуации больше всего интересует - от чего при проверке констрейнта ошибка не поднимается.
Маcтер таблица ведь находится в состоянии модификации - мутирует. Шаманство какоето. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
да вроде ровно все, в случае с before:
в случае с after, все выполняется в одной транзакции, так что в случае исключения все откатится. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
DimW, то что ровно - то понятно. Не понятно почему в частном случае проверки целостности по FK позволяется доступ к мутирующей таблице, в то время как в общем случае - нет
-------------------- Достоверно известно, что 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. |