Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггер запрещающий удалять записи при / 25 сообщений из 39, страница 1 из 2
27.11.2014, 13:37
    #38818338
JleHuH213
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Подскажите как это выполнить? задание такое:
Разработать триггер запрещающий удалять записи, если с ней связаны записи из другой таблицы.
...
Рейтинг: 0 / 0
27.11.2014, 13:46
    #38818353
Триггер запрещающий удалять записи при
JleHuH213Разработать триггер запрещающий удалять записи, если с ней связаны записи из другой таблицы.Это не триггером делается. Более того, вам не удастся реализовать это триггерами, т.к. они видят только изменения внутри транзакций, в которых работают, и не видят "грязных" изменений, которые делают транзакции-конкуренты.
Читайте доку на тему "Ограничения ссылочной целостности", они же - "внешние ключи".
...
Рейтинг: 0 / 0
27.11.2014, 13:51
    #38818360
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Ованес Сусанян,

ты не понимаешь. Им именно так задание сформулировали.
...
Рейтинг: 0 / 0
27.11.2014, 13:52
    #38818362
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
JleHuH213,
ALTER TABLE .. ADD CONSTRAINT .. FOREIGN KEY (..) REFERENCES .. (..)
и триггер писать не надо
...
Рейтинг: 0 / 0
27.11.2014, 13:58
    #38818374
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Симонов ДенисИм именно так задание сформулировали.
Ну, может это проверка на вшивость. Те, кто принесут триггер, зачёта не получат.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.11.2014, 14:29
    #38818416
Kirill Razuvaev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Dimitry SibiryakovНу, может это проверка на вшивость. Те, кто принесут триггер, зачёта не получат.Думаю, это проверка на то, дочитал ли конкретный гражданин до главы, где описывается работа с экс...
...
Рейтинг: 0 / 0
27.11.2014, 14:32
    #38818419
NikolayV81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Dimitry SibiryakovСимонов ДенисИм именно так задание сформулировали.
Ну, может это проверка на вшивость. Те, кто принесут триггер, зачёта не получат.


Тут бы ещё глубину связи понять, с другой таблицей, а то мало-ли что подразумевалось автором...
...
Рейтинг: 0 / 0
27.11.2014, 14:39
    #38818427
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Ну что не будем давать пулемет?

если таки не боишься выстрелить себе в ногу, то читать про генерацию exception
...
Рейтинг: 0 / 0
27.11.2014, 16:54
    #38818579
JleHuH213
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Нужен именно триггер.
Я как понимаю: перед удаление записей из подчиненной таблице срабатывает триггер. Который проверяет наличия записи в главной таблице совпадения. если находит то даёт команду что удалять не надо. Если так то: берем что то вроде
Код: sql
1.
 if((SELECT NAME FROM RATING) = old.st_surname) then

и надо дать команду что само удаление не делалось. как это сделать?
...
Рейтинг: 0 / 0
27.11.2014, 17:02
    #38818591
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
JleHuH213как это сделать?
под спойлером в сообщении выше
...
Рейтинг: 0 / 0
27.11.2014, 17:05
    #38818595
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
JleHuH213перед удаление записей из подчиненной таблице срабатывает триггер. Который проверяет наличия записи в главной таблице совпадения. если находит то даёт команду что удалять не надо.
это только у меня такое искривленное ощущение реальности
...
Рейтинг: 0 / 0
27.11.2014, 17:18
    #38818615
JleHuH213
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
m7m,

ты бы не умничал, а помог. Больше дела сделаешь.
...
Рейтинг: 0 / 0
27.11.2014, 17:20
    #38818618
zirra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
JleHuH213> ты бы не умничал, а помог. Больше дела сделаешь.
Ты бы не тупил, а читал, что тебе умные люди пишут...

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.11.2014, 17:32
    #38818641
Триггер запрещающий удалять записи при
JleHuH213триггер <...> проверяет наличия записи в главной таблице совпадения. если находит то даёт команду что удалять не надо.Хорошо.

Вот у вас есть таблицы, которые вы хотите триггером "связать" так, чтобы они работали как главная и дочерняя:
Код: plaintext
1.
2.
3.
recreate table tmain(id int primary key);
recreate table tdetl(id int primary key, pid int); -- поле pid должно содержать всегда только какой-то ID из tmain
commit;

Вот я добавляю туда несколько строк:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
insert into tmain(id) values(1);
insert into tmain(id) values(2);
commit;

insert into tdetl(id, pid) values(100, 1);
insert into tdetl(id, pid) values(101, 1);
insert into tdetl(id, pid) values(102, 1);
insert into tdetl(id, pid) values(103, 1);
insert into tdetl(id, pid) values(201, 2);
insert into tdetl(id, pid) values(202, 2);
insert into tdetl(id, pid) values(203, 2);
commit;

Представим, что вы сделали триггер, логику которого обрисовали выше.
Объясните теперь: как УДАЛИТЬ из дочерней таблицы (tdetl) только одну строку из трёх для pid = 2 ?
Простое
Код: sql
1.
delete from tdetl where pid = 2 rows 1

- не прокатит, триггер запретит.
Значит, надо сначала удалить запись в главной таблице (tmain) - так по вашей логике ?
...
Рейтинг: 0 / 0
27.11.2014, 17:37
    #38818654
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Hello, Ованес Сусанян!
You wrote on 27 ноября 2014 г. 17:34:52:

Ованес Сусанян> так по вашей логике ? нет там логики.
это очередной тупой ленивый студиоз желает чтоб за него сделали лабу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.11.2014, 17:43
    #38818669
Триггер запрещающий удалять записи при
Мимопроходящийнет там логики.Да там и препода нет. Старший лаборант семинар проводит.
Учить триггерами обеспечивать декларативные правила - "за это убивать надо" (С)
...
Рейтинг: 0 / 0
27.11.2014, 17:48
    #38818677
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
JleHuH213а помогТебе итак уже помогли, сделать больше означает "сделать вместо тебя". Озвучивай сумму компенсации и вперед в раздел "работа" с этим не к нам.
...
Рейтинг: 0 / 0
27.11.2014, 17:58
    #38818690
JleHuH213
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Есть 2 таблица
Главная

Второстепенная


при попытке удаления "Иван" или "Сергей" НЕ удаляется.. при удалении "альберта" или "дениса" действие выполняется.

Так наглядние
...
Рейтинг: 0 / 0
27.11.2014, 18:03
    #38818691
Триггер запрещающий удалять записи при
JleHuH213при попытке удаления "Иван" или "Сергей" НЕ удаляется..В какой именно таблице запрещать удаление: в первой или во второй ? Судя по вашим словам, во "второстепенной" - так или нет ?
...
Рейтинг: 0 / 0
27.11.2014, 18:03
    #38818694
JleHuH213
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Ованес Сусанян,

Да.
...
Рейтинг: 0 / 0
27.11.2014, 18:13
    #38818703
Триггер запрещающий удалять записи при
JleHuH213при удалении "альберта" или "дениса" действие выполняется.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 user #1 
-- Проверяем, что в гланой таблице нет записи "денис".
-- Допустим, что проверка прошла успешно, можно удалять.
delete from "второстепенная" where name = "денис";

 user  #2  // действует в то же самое время, что и user1
insert into "главная" (name) values("денис");

 user #1 
-- тут можно еще 100 раз обпроверяться, что записи "денис" в главное таблице нет.
-- И её действительно нет.  Пока  нет.
commit;

 user  #2  
commit;

Ну, и ? Удалили "дениса" из второстепенной, а он внезапно так оказался в главной...

Желаю удачи.
...
Рейтинг: 0 / 0
27.11.2014, 19:37
    #38818775
JleHuH213
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
Ованес Сусанян,

Подскажите, как сделать что бы по всем строкам выемки проверял? тут если результат выемки возвращает более 1 строки:
Код: sql
1.
if((SELECT name FROM t1) = old.name)
...
Рейтинг: 0 / 0
27.11.2014, 19:41
    #38818779
JleHuH213
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер запрещающий удалять записи при
я сделал спасибо! =)
...
Рейтинг: 0 / 0
27.11.2014, 19:57
    #38818789
Триггер запрещающий удалять записи при
JleHuH213Подскажите, как сделать что бы по всем строкам выемки проверял? тут если результат выемки возвращает более 1 строки:
Код: sql
1.
if((SELECT name FROM t1) = old.name)

1) я вас не понимаю. Вы делаете много грамматический ошибок, но что хуже - не заканчиваете предложения.
На всякий случай: http://www.sql.ru/forum/rules.aspx Ограничения
Официальный язык форума - русский. <...> Использование других языков возможно при цитировании либо в других исключительных случаях. Если он для вас не родной, сообщите об этом сразу, чтобы не было претензий от тех, кто пытается вас понять;
2) повторю еще раз: вы не решите исходную задачу триггерами. Так и передайте своему преподу. Пример я привёл выше .
...
Рейтинг: 0 / 0
27.11.2014, 19:59
    #38818792
Триггер запрещающий удалять записи при
JleHuH213я сделал спасибо! =)Благородный дон покажет этот шедевр серым обывателям ?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггер запрещающий удалять записи при / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]