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

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


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

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

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

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

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер запрещающий удалять записи при
    #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
Триггер запрещающий удалять записи при
    #38818654
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Ованес Сусанян!
You wrote on 27 ноября 2014 г. 17:34:52:

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

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


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

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

Да.
...
Рейтинг: 0 / 0
Триггер запрещающий удалять записи при
    #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
Триггер запрещающий удалять записи при
    #38818775
JleHuH213
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ованес Сусанян,

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

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


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