Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 21:08   #1
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию Триггер на запрет удаление

Имеется 2 таблицы Car и Rent они связанны так car.id = rent.car_id.

Нужно запретить удаление авто из таблицы Car которое было арендовано когда то есть id которого уже засветилось в таблице rent.
Просто вывести авто которое было арандовано это элементарно

select car.id, car.mark
from car, rent
where car.id = rent.car_id;

А как тригеру сказать что авто которое пытаются удалить уже когда то было в аренде ?
MrBobyara вне форума Ответить с цитированием
Старый 25.10.2011, 22:14   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вообще-то язык написания триггеров для различных СУБД не совпадает. Как думаете затруднительно будет нарисовать триггер на удаление или подсказать что-то, чтобы это подходило для любой СУБД?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.10.2011 в 23:32.
Аватар вне форума Ответить с цитированием
Старый 26.10.2011, 15:37   #3
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию

Забыл про СУБД, извините.
Oracle

Дак что никто не знает как помочь ?

Что никто не знает как это можно реализовать ?

Последний раз редактировалось Stilet; 30.10.2011 в 23:34.
MrBobyara вне форума Ответить с цитированием
Старый 30.10.2011, 14:39   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

3 минуты погуглить и совершенно не имея представления об оракле какой-то путь можно нащупать. Идея такая, за правильность использования команд не ручаюсь (в Oracle нуль)
Код:
create trigger Car before delete on a for each row
DECLARE
X NUMBER;
begin
  SELECT COUNT(*) INTO X FROM rent WHERE where :old.id = rent.car_id;
  if  x > 0
  then
    raise_application_error(-20001,'фига С МАКОМ');
  end if;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.10.2011 в 15:11.
Аватар вне форума Ответить с цитированием
Старый 30.10.2011, 23:45   #5
MrBobyara
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 28
По умолчанию

Спасибо большое, помогло !
У меня была проблема в том что я условие не туда писал, вот оно и урчало на меня.
Аватар А можно источник ?
MrBobyara вне форума Ответить с цитированием
Старый 30.10.2011, 23:48   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ключевые слова: ORACLE триггер, ORACLE синтаксис и т.д. Ссылку не помню
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет нажатия кнопки и запрет неправильного ввода данных De_Kurlzz Помощь студентам 1 15.06.2011 15:14
Запрет на удаление пустой строки StringGrid Sheeby Помощь студентам 8 25.04.2011 07:31
Запрет на удаление из TOpenDialog. m007kuzya Компоненты Delphi 2 19.02.2010 12:14
триггер veter_s_morya SQL, базы данных 10 06.10.2008 21:58
Запрет на удаление строк и столбцов Shavminator Microsoft Office Excel 2 12.01.2008 13:36