Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.07.2005, 10:36
|
|||
|---|---|---|---|
|
|||
Помогите с триггером. |
|||
|
#18+
Добрый день. Имеем Sybase Adaptive Server Enterprise/12.5.2/ так же имеем триггер CREATE TRIGGER dbo.REG ON dbo.REGISTRATIONS FOR INSERT AS DECLARE @CMD varchar(50) SELECT @CMD = 'D:\app.exe ' + convert(varchar,inserted.id) + '' FROM inserted BEGIN EXEC master ..xp_cmdshell @CMD END этот app.exe передает удаленному серверу ID записи и далее сервер делает SELECT на эту запись, ессно инсерта еще не было а тут сразу селект, происходит блокировка. Как с этим бороться, мне необходимо чтобы сработал INSERT а сразу после этого запустился триггер. Знаю что есть всяческие AFTER и BEFORE. Вообщем хелп ми :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.07.2005, 12:31
|
|||
|---|---|---|---|
|
|||
Помогите с триггером. |
|||
|
#18+
как я понял создавать триггеры таким образом CREATE TRIGGER "Valid_Insert_Update" BEFORE INSERT можно только в ASA, а в ASE это невозможно, это так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.07.2005, 13:05
|
|||
|---|---|---|---|
|
|||
Помогите с триггером. |
|||
|
#18+
как ни странно, работает :) CREATE TRIGGER dbo.REG ON dbo.REGISTRATIONS FOR INSERT AS DECLARE @CMD varchar(100) SELECT @CMD = 'D:\app.exe ' + convert(varchar,inserted.id) + '' FROM inserted BEGIN COMMIT EXEC master ..xp_cmdshell @CMD END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.07.2005, 18:13
|
|||
|---|---|---|---|
Помогите с триггером. |
|||
|
#18+
Я очень подозрительно отношусь к коммиту внутри триггера. Да, оно вроде работает в данной ситуации, но теперь ты потерял возможность отката. У меня была подобная задача, решил ее так: Во первых делаю у себя на локальной базе прокси таблицу показывающую на таблицу на удаленном сервере. На основной таблице есть триггер который копирует часть информации (ПК например) в прокси-таблицу. По локальному коммиту сохраняются локальные изменения и уже физически отсылаются записи вставленые в прокси таблицу. На удаленном сервере, таблица на которую показывает наша локальная прокси имеет триггер делающий обратные запросы. При откате все вставки в прокси-таблицу естественно забываются и удаленный сервер не трогается вообще. Работает без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.07.2005, 09:27
|
|||
|---|---|---|---|
Помогите с триггером. |
|||
|
#18+
grin:..как ни странно, работает :) CREATE TRIGGER dbo.REG ON dbo.REGISTRATIONS FOR INSERT AS DECLARE @CMD varchar(100) SELECT @CMD = 'D:\app.exe ' + convert(varchar,inserted.id) + '' FROM inserted BEGIN COMMIT EXEC master ..xp_cmdshell @CMD END Нет, это не работает. Не должно. А то, что ты хочешь сделать - просто классика, канонический пример, как нельзя делать. Если тебе тут же нужна эта новая запись, ну выдай ее тут же, хотя бы прямо из триггера (хотя я бы оформил хранимую процедуру). Клиент ее прочитает, все будут довольны. Никаких BEFORE INSTEAD в ASE нет, только AFTER и FOR ALL ROW. Кстати, твой триггер не предназначен для работы с более чем одной строкой, но никак это не обрабатывает тем не менее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&mobile=1&tid=2013498]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 363ms |

| 0 / 0 |
