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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> триггер на удаление 
V
    Опции темы
Galka
Дата 7.9.2006, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2006
Где: г. Самара

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



Помогите решить проблему.
Имеется 2 взаимосвязанные таблицы: sprav_reg и znach. 
Код
create table sprav_reg
 (num_reg NUMBER(10) not null,
name_reg varchar2(50) not null,
primary key (num_reg)); 

create table znach
(num_zn NUMBER(10) not null,
reg_zn NUMBER(10) not null,
value_zn float,
primary key (num_zn));


Нужно, чтобы при удалении записи из таблицы sprav_reg удалялись соответствующие записи таблицы znach по полю reg_zn.

Создаю триггер:
Код
CREATE OR REPLACE TRIGGER delet_reg 
BEFORE DELETE ON sprav_reg
FOR EACH ROW
DECLARE
BEGIN
DELETE FROM znach
WHERE znach.reg_zn=sprav_reg.num_reg;
end;


При компиляции выдается ошибка:
Код
TRIGGER PAK.DELET_REG
On line:  4
PL/SQL: ORA-00904: "SPRAV_REG"."NUM_REG": недопустимый идентификатор


В чем проблема?
PM MAIL   Вверх
LSD
Дата 7.9.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



1. Правильно так:
Код
create or replace trigger DELET_REG 
 before delete on SPRAV_REG
 for each row
declare
begin
  delete from ZNACH
   where ZNACH.REG_ZN = :old.NUM_REG;
end;
/


2. Лучше использовать не триггер, а foreign key у которого поставить on delete cascade.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Galka
Дата 7.9.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2006
Где: г. Самара

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



Сделала. Но при создании триггера выдается окно

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  error.GIF 9,25 Kb
PM MAIL   Вверх
LSD
Дата 7.9.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Выполни скрипт из SQL Plus.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Galka
Дата 7.9.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2006
Где: г. Самара

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



Ура! Получилось! smile
Большое спасибо!
PM MAIL   Вверх
ols
Дата 11.9.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а что бы такое окно в будушем не появлялось нужно либо скрипт выполнять по F5 
либо снять галочку в контекстном меню "Prompt for substitution variables"
удачи
PM MAIL WWW   Вверх
Galka
Дата 12.9.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.9.2006
Где: г. Самара

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



По F5 - получилось! Спасибо! smile
А вот где снять галочку не поняла. Вернее не нашла "Prompt for substitution variables". Если не трудно, подскажите.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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