Текущее время: Сб, июл 19 2025, 23:50

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Триггеры
СообщениеДобавлено: Вт, янв 09 2007, 18:13 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 21 2004, 16:30
Сообщения: 609
Пол: Мужской
извне в прозрачную таблицу поступают данные.
в абапе насколько я знаю нет способа обработать такую ситуацию.
Т.е. триггер придется создавать на уровне СУБД.
Вопрос, если СУБД MS SQL, как в триггере обратиться именно к той записи которая инициировала его срабатывание? Только конечно без использования select с упорядочиванием по поступлению.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Триггеры
СообщениеДобавлено: Вт, янв 09 2007, 18:29 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Склеротик написал:
извне в прозрачную таблицу поступают данные.
в абапе насколько я знаю нет способа обработать такую ситуацию.
Т.е. триггер придется создавать на уровне СУБД.
Вопрос, если СУБД MS SQL, как в триггере обратиться именно к той записи которая инициировала его срабатывание? Только конечно без использования select с упорядочиванием по поступлению.

Никак. Никаких тригеров и никаких прямых доступов из внешних БД к саповским таблицам!!!

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Триггеры
СообщениеДобавлено: Вт, янв 09 2007, 18:34 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
Склеротик написал:
извне в прозрачную таблицу поступают данные.
в абапе насколько я знаю нет способа обработать такую ситуацию.
Т.е. триггер придется создавать на уровне СУБД.
Вопрос, если СУБД MS SQL, как в триггере обратиться именно к той записи которая инициировала его срабатывание? Только конечно без использования select с упорядочиванием по поступлению.


по поводу особенностей работы с MS SQL не подскажу - надо читать соответствующий документ;

однако ситуация с записью непосредственно в прозрачную таблицу очень настораживает, так как если это стандартная, а не Z* таблица, то ее обновление может быть чревато различными последствиями, может имеет смысл обратить на RFC?

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 09 2007, 18:41 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Если говорить просто о MS SQL Server (безотносительно SAP), то конечно там можно в триггере напрямую получить доступ к добавляемой записи. Занимался я этим года 4 назад, так что могу только посоветовать в ентерпрайз менеджере создать триггер через визард. Помнится, он там определит какие-то переменные, через которые и идет доступ к добавляемой записи. Что то типа @имястолбца_new, кажется..

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 09 2007, 18:57 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
LKU написал:
Если говорить просто о MS SQL Server (безотносительно SAP), то конечно там можно в триггере напрямую получить доступ к добавляемой записи. Занимался я этим года 4 назад, так что могу только посоветовать в ентерпрайз менеджере создать триггер через визард. Помнится, он там определит какие-то переменные, через которые и идет доступ к добавляемой записи. Что то типа @имястолбца_new, кажется..

Но лучше этого не делать... RFC должно в этом деле должно помочь...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 09 2007, 19:04 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 21 2004, 16:30
Сообщения: 609
Пол: Мужской
И все-таки как сделать, опуская что этого делать нельзя?
Минусы я знаю. Сам админ с немалым стажем.:)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 09 2007, 21:04 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Дома открыл хелп к sql server, вот примерчик
Code:
CREATE TRIGGER updEmployeeData
ON employeeData
FOR update AS
/*Check whether columns 2, 3 or 4 has been updated. If any or all of columns 2, 3 or 4 have been changed, create an audit record. The bitmask is: power(2,(2-1))+power(2,(3-1))+power(2,(4-1)) = 14. To check if all columns 2, 3, and 4 are updated, use = 14 in place of >0 (below).*/

   IF (COLUMNS_UPDATED() & 14) > 0
/*Use IF (COLUMNS_UPDATED() & 14) = 14 to see if all of columns 2, 3, and 4 are updated.*/
      BEGIN
-- Audit OLD record.
      INSERT INTO auditEmployeeData
         (audit_log_type,
         audit_emp_id,
         audit_emp_bankAccountNumber,
         audit_emp_salary,
         audit_emp_SSN)
         SELECT 'OLD',
            del.emp_id,
            del.emp_bankAccountNumber,
            del.emp_salary,
            del.emp_SSN
         FROM deleted del

-- Audit NEW record.
      INSERT INTO auditEmployeeData
         (audit_log_type,
         audit_emp_id,
         audit_emp_bankAccountNumber,
         audit_emp_salary,
         audit_emp_SSN)
         SELECT 'NEW',
            ins.emp_id,
            ins.emp_bankAccountNumber,
            ins.emp_salary,
            ins.emp_SSN
         FROM inserted ins
   END


То есть обращение к вставленной строке как inc.имя_столбца

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 10 2007, 15:16 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 21 2004, 16:30
Сообщения: 609
Пол: Мужской
Спасибо. Т.е. работаем с двумя таблицами inserted и deleted.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, янв 10 2007, 18:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Склеротик написал:
Спасибо. Т.е. работаем с двумя таблицами inserted и deleted.


Ну да. Не заметил, что inc это только краткое имя для inserted. :oops:

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB