Текущее время: Вс, июл 20 2025, 12:40

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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