2014-08-28 5 views
2

У меня есть триггер на таблице, который должен выполнить хранимую процедуру, если выполнено определенное условие. Есть ли простой способ сделать это, не полагаясь на создание таблиц для хранения данных или с помощью курсора?sybase trigger условный exec хранится proc

В качестве примера я имею TABLEA:

tableA 
col1 INT, 
col2 INT 

На обновление этого нужно выполнить хранимую прок, если col2 был обновлен и передать col1 в качестве параметра.

Так что было бы что-то вроде

CASE WHEN i.col2 <> d.col2 THEN EXEC sp_MySproc i.col1 
FROM inserted i 
INNER JOIN deleted d 
    on i.col1 = d.col1 

База данных и все триггера были разработаны для обновления одной записи/строк в то время, и я пытаюсь медленно сделать некоторые изменения для того, чтобы он быть на основе наборов записей, а не одиночных строк.

Будет ли включать в себя функции?

Благодаря

+0

нет прямой способ сделать это. Тем не менее, вы можете циклически вставлять/удалять, проверять и вызывать SP внутри цикла – Meet

+0

Я пытался избежать всего объекта курсора. Я не думал, что это возможно, но подумал, что я увижу, есть ли что-то, о чем я не знал. благодаря – HoboPants

ответ

0

Если вы используете Sybase ASE вы могли бы попробовать использовать конструкцию на спусковом крючке:

if update (column_name) 

Если бы вы могли рефакторинга ваш SP - вы можете выгружать данные во временную таблицу (или физическую таблицу) и выполнить процедуру из триггера, которая будет работать с этими данными.

Смежные вопросы