powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / TRIGGER удалить сразу после INSERT
18 сообщений из 18, страница 1 из 1
TRIGGER удалить сразу после INSERT
    #40064536
diSmiSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДВС! Сильно не пинайте не DBA от слова совсем, но задачу подкинули.
Есть старое купленое ПО без исходного кода. С контроллеров поступают данные в сервис, а дальше в БД. Вторая часть этого ПО вызывает событие оповещения при нахождении новой записи в таблице. Обе части работают как Windows сервисы.
БД Firebird 2.5

Задача:
Не выводить оповещение по конкретному человеку.
Попытался организовать вот таким образом (подсмотрел тут )
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE EXCEPTION BOSS '';


CREATE TRIGGER INS_CHECK FOR TBL_ALARM
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if ((new.PERSID = '00833') or (new.PERSID = '00795')) then exception BOSS;
end


Однако возникла проблема в том, что сервис отвечающий за запись стал выпадать в ошибку. Понял что EXCEPTION мне не подходит. Хотя запись в таблице не появлялась как и положено.

Вопрос: можно ли сделать чтобы запись "принималась" и по тригеру удалялась? В моем понимании должно получиться что то вроде этого:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TRIGGER INS_CHECK FOR TBL_ALARM
ACTIVE AFTER INSERT POSITION 0
as
begin
  if ((new.PERSID = '00833') or (new.PERSID = '00795')) then ЧТО????;
end


В общем нужно удалить вставленную только что строку (или не вставлять ее вовсе но чтоб у сервиса записи не возникло подозрений что она не вставлена).

PS: есть еще генератор для каждой строки
Код: sql
1.
CREATE SEQUENCE ID;

Может можно его после INSERT как то использовать?
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064540
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diSmiSS, что это за BOSS такой, что стремается светиться в пропускной системе?
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064541
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diSmiSS,

Так не получится.

Один из вариантов сделать view с именем TBL_ALARM, а саму таблицу переименовать.
В триггере на вставку игнорировать указанные строки.
Но тут "программист нужен", я бы не стал влазить в работающую чужую систему.
А каким образом система узнает о новой записи? Может там изменить проверку или удалить эту строку?
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064549
diSmiSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шавлюк Евгений
А каким образом система узнает о новой записи? Может там изменить проверку или удалить эту строку?
По моим наблюдениям "сервис оповещения" каждые 30 секунд сам ломится в БД и проверяет. Про изменение речи не идет так как даже временной интервал судя по всему прописан в самом exe файле сервиса.

авторТак не получится. через тригер не получится? Или в целом, ни процедуры, ни тригеры мне не помогут и можно про это забыть?
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064553
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diSmiSSчерез тригер не получится? Или в целом, ни процедуры, ни тригеры мне не помогут и можно
про это забыть?

В данном случае вам поможет только техподдержка вышененазванного продукта.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064573
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно написать свой сервис, который регулярно, ну, скажем, раз в минуту, или секунду, будет удалять записи с "неправильным" PERSID. Это на случай, если на работе развлечений мало.
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064615
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
Можно написать свой сервис, который регулярно, ну, скажем, раз в минуту, или секунду, будет удалять записи с "неправильным" PERSID. Это на случай, если на работе развлечений мало.


Безнаказанным все равно не останется.
Мы регулярно выдаем сводки по вмешательству в БД.
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064629
a7exander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diSmiSS,

Как насчет супер-изврата - в триггере AFTER INSERT сделать delete этой же записи?

Сам такие извраты не практикую, но по идее эту запись не должна увидеть никакая другая транзакция...
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064630
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a7exander,

ага. А потом в триггере AFTER DELETE сделать INSERT этой же записи
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064653
diSmiSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devчто это за BOSS такой, что стремается светиться в пропускной системе? Он не хочет чтобы оператор заранее знал о его проходе в режимное помещение с целью внезапной проверки.
Dimitry Sibiryakov
В данном случае вам поможет только техподдержка вышененазванного продукта.
К сожалению не помогут.
shalamyanskyМожно написать свой сервис, который регулярно, ну, скажем, раз в минуту, или секунду, будет удалять записи с "неправильным" PERSID. Это на случай, если на работе развлечений мало. Развлечений предостаточно :) Но за идею спасибо. Попробую с этой стороны зайти. Просто изначально верил, что тригеры меня спасут.

Подитожим:
1. SILENT EXCEPTION не существует.
2. TRIGGER с условием AFTER INSERT не может удалить внесенную строку и одновремено ответить клиенту об успешном выполнении операции INSERT.

Всем спасибо за участие!
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064659
a7exander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diSmiSS

2. TRIGGER с условием AFTER INSERT не может удалить внесенную строку и одновремено ответить клиенту об успешном


Триггер вообще никому ничего не отвечает. Молча делает.
Странно что вам не лень чатиться на форуме но лень проверить предложенное решение.
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064670
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
diSmiSS
Он не хочет чтобы оператор заранее знал о его проходе в режимное помещение с целью внезапной проверки.


или о факте прохода в режимное помещение :)

приказ от директора по безопасности, или замена СКУД.

можно пересидеть последствия в уютной камере :)
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064684
diSmiSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a7exanderТриггер вообще никому ничего не отвечает. Молча делает.
Странно что вам не лень чатиться на форуме но лень проверить предложенное решение. Ок, я могу ошибаться в терминологии/принципах работы. Спасибо вам за пояснения.
Все решения которые я смог придумать я уже проверил. Еще раз я не DBA-шник. :sorry:
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064695
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a7exanderв триггере AFTER INSERT сделать delete этой же записи?

В старые времена такой трюк был способен убить базу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064707
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
diSmiSS
Он не хочет чтобы оператор заранее знал о его проходе в режимное помещение с целью внезапной проверки.

Или с целью что-то спокойно украсть, а босс тут ни при чем.
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064746
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На триггере можно спокойно заменить PERSID на другой. И пусть охрана ловит призраки.
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064751
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в более-менее приличных СКД, база данных не является единственным источником получения достоверной информации.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TRIGGER удалить сразу после INSERT
    #40064858
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
с целью что-то спокойно украсть
На том и закончим, закрыто.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / TRIGGER удалить сразу после INSERT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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