Нужны или нет триггеры на конкретную инструкцию ?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Нужны или нет триггеры на конкретную... Expand / Collapse
Автор
Сообщение
20.08.2005 15:51
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.08.2005 15:45
Сообщ.: 3, Visits: 34
Интересно ваше мнение по поводу следующего

На данный момент стандарт SQL-3 (SQL-2 c PSM) предусматривает создание триггеров (событие + действия). В моем понимании это реакция на результат того или иного изменения данных.


Почему разработчики СУБД не позволяют реагировать на конкретную выполненную инструкцию SQL. Ну например, как вариант, если бы была системная таблица, в которую всавлялась бы очередная выполненная инструкция. Понятно, что существует много ситуаций, когда нужно реагировать на результат (ведь к одному и тому же рузультату могут привести различные инструкции), но на мой взгляд существуют и другие ситуации, когда нужна реакция именно на конкретную инструкцию. Другими словами, когда событие - это выполлнение инструкции SQL (например, когда необходимо отличать какая инструкция привела к данному результату).
Сообщ. #878680
21.08.2005 1:51
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 25.06.2006 12:18
Сообщ.: 337, Visits: 3 698
Вы сами-то поняли, что хотели сказать?... Я не понял. Хотя вроде не дурак.
Сообщ. #878688
22.08.2005 13:46
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.08.2005 15:45
Сообщ.: 3, Visits: 34
Пример для всех - я так понимаю решение невозможно в рамках РСУБД

Есть 2 совсем разных, предназначенных для решения своих локальных задач приложения, и работающих на MS SQL и DB2 и у которых есть import/export. В первом приложении есть форма и пользователь добавляет данные инструкцией INSERT INTO Sotrudnik (Id,Sotr_FIO) VALUES (1,''Иванов C.И.'') (ну то есть есть форма на которой вводятся данные и user нажимает кнопку добавить). В том же приложении иногда делается import документов, которые добавляются инструкцией INSERT INTO Sotrudnik (Id,Sotr_name) SELECT * FROM TEMP1 (ну там создается дополнительная таблица на сервере и потом все одной инструкцией в базу - не знаю для чего, наверно зачем-то нужно). Подвергать изменениям код приложений нельзя и перепроектировать что-то то же.
Далее - надо реализовать следующую логику (она может быть различной - для этого конкретного примера - такой)

1) Если это INSERT INTO Sotrudnik (Id,Sotr_FIO) VALUES (1,''Иванов C.И.'') то добавить это ФИО в таблицу на другом сервере DB2 для второго приложения

2) Если это INSERT INTO Sotrudnik (Id,Sotr_FIO) SELECT * FROM TEMP1 то также все их добавить + дополнительно в отдельное поле ''Notes'' на втором сервере дописать ''import'' для каждой записи.

Итак триггер на INSERT - дальше как отличить одну форму (синтаксис) инструкции которая приходит на сервер от другой невозможно в рамках рсубд ???


Сообщ. #878740
22.08.2005 14:15
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 06.12.2008 23:32
Сообщ.: 343, Visits: 3 389
А "взводить" какую-нибудь переменную нельзя ? В том или ином случае? проблема, мне кажется, надумана...
Сообщ. #878742
22.08.2005 14:35
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Можно проверять существуют ли вставляемые записи (из таблицы Inserted) в таблице Temp1.
Сообщ. #878746
22.08.2005 15:53
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 22.08.2005 15:45
Сообщ.: 3, Visits: 34
2 vpanasenko

А "взводить" какую-нибудь переменную нельзя ? В том или ином случае? проблема, мне кажется, надумана...

ну как ее "взводить" - поясните. Код приложений модифицировать нельзя. Триггер на Insert - результат и для 1 и для 2 инструкции одинаков. Разве что проверять количество записей при вставке - если одна - то скорее это 1, если сразу больше - то 2-ая инструкция. Но где гарантия что импортироватся будет не одна запись ?

Надуманность - объсните что вы имеете ввиду

2 bazile

"Можно проверять существуют ли вставляемые записи (из таблицы Inserted) в таблице Temp1. "

Ну таблица Temp1 - временная и создает ее приложение на сервере. Вопрос - как проверять ?


Сообщ. #878752
22.08.2005 17:11
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
[quote="dima_9"]Ну таблица Temp1 - временная и создает ее приложение на сервере. Вопрос - как проверять ?[/quote]
if object_id(''temp1'') is not null
begin
-- Таблица temp1 существует
end
Сообщ. #878761
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 1:00