powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите с триггером.
5 сообщений из 5, страница 1 из 1
Помогите с триггером.
    #33190917
grin:..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Имеем 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. Вообщем хелп ми :)
...
Рейтинг: 0 / 0
Помогите с триггером.
    #33191403
grin:..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как я понял создавать триггеры таким образом
CREATE TRIGGER "Valid_Insert_Update" BEFORE INSERT
можно только в ASA, а в ASE это невозможно, это так?
...
Рейтинг: 0 / 0
Помогите с триггером.
    #33191511
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
...
Рейтинг: 0 / 0
Помогите с триггером.
    #33192452
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я очень подозрительно отношусь к коммиту внутри триггера. Да, оно вроде работает в данной ситуации, но теперь ты потерял возможность отката.
У меня была подобная задача, решил ее так:
Во первых делаю у себя на локальной базе прокси таблицу показывающую на таблицу на удаленном сервере. На основной таблице есть триггер который копирует часть информации (ПК например) в прокси-таблицу. По локальному коммиту сохраняются локальные изменения и уже физически отсылаются записи вставленые в прокси таблицу. На удаленном сервере, таблица на которую показывает наша локальная прокси имеет триггер делающий обратные запросы. При откате все вставки в прокси-таблицу естественно забываются и удаленный сервер не трогается вообще.
Работает без проблем.
...
Рейтинг: 0 / 0
Помогите с триггером.
    #33192753
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
Кстати, твой триггер не предназначен для работы с более чем одной строкой, но никак это не обрабатывает тем не менее.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите с триггером.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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