2016-07-19 8 views
0

Я пытаюсь прокрутить вставленную таблицу в триггер Sybase. В конечном счете, я хочу записать всю информацию вставленных записей в таблицу аудита.Как прокручивать «вставленную» таблицу в триггер sybase

Я попытался использовать временную таблицу в триггере Sybase. Но, Sybase бросил ошибку, заявив, что она не позволяет временные таблицы внутри триггера.

Я не уверен, могу ли я использовать курсор. Но, я считаю, что курсоры будут чрезмерными по производительности.

Есть ли лучший способ достичь этого?

+0

Курсор будет вашим лучшим выбором. Вы зацикливаетесь только через вставленные записи ..... – Stivan

+0

Зачем вам нужно перебирать все 300 записей? – Meet

+0

@Meet - В моем приложении менеджеры назначают работу (3000 записей) одному пользователю за раз. Итак, у нас есть один оператор insert для вставки всех записей. Мы хотим убедиться, что мы записываем все распределения, а также возможные будущие перераспределения в таблицу аудита. Например: Вставить в таблицу_A (col_a, col_b, col_c) выбрать col_a, col_b, col_c из таблицы_B – PavanNPT

ответ

0

Вы можете получить это с помощью курсора ... Не перебирать всю таблицу, а только то, что вы вставили. Вот шаблон, который вы можете использовать внутри своего триггера. обязательно используйте таблицу "вставленный" ..

CURSOR ШАБЛОН:

declare cursor_inserted cursor for 
select 
    column1, 
    column2, 
    column3 
from inserted 
where 
    column1 = some_value 

--These variables should be same datatype as columns in your table 
declare @id    int     --for column1 
declare @date1   datetime   --for column2 
declare @string1  varchar(512)  --for column3 

open cursor_inserted 
fetch cursor_inserted into @id, @date1, @string1 
    while (@@sqlstatus <> 2) 
     begin 
      print 'Here is where you can log everything you have inserted. Code goes here' 
      fetch cursor_inserted into @id, @date1, @string1 
     end 
close cursor_inserted 
deallocate cursor_inserted 
+0

Спасибо! Не будет ли цикл через 3000 вставленных записей с помощью курсора ухудшить производительность? – PavanNPT