Я выполняю оптимизацию производительности триггера, и я хочу ее протестировать. У меня есть фактический триггер и измененный триггер, и я хочу, чтобы реальные данные запускали тест на старом триггере и новом триггере и сравнивали его. Я хочу скопировать таблицу A в A_BCK по строкам. Таблица A содержит около 60 столбцов и 4000 строк, поэтому мой триггер будет выполняться 4000 раз, и я могу использовать его для теста производительности.Копировать таблицу по строкам
Я читал о курсорах, но не могу понять, как использовать курсор и переменную для копирования строк за строкой (не выбирать в a_bck или вставлять в a_bck выбор, из которого оба генерируют только одну вставку).
Моя строка процедура копирования, как на данный момент выглядит следующим образом:
declare @actualrow varchar(15);
DECLARE eoauz CURSOR FAST_FORWARD FOR SELECT * FROM A
open eoauz
fetch next from eoauz into @actualrow
while @@fetch_status = 0
begin
/* INSERT INTO A_BCK VALUES FROM @actualrow */
fetch next from eoauz into @actualrow
end
close eoauz
deallocate eoauz
Конечно, это не работает. Мне нужно что-то вроде переменной строки вместо varchar. Может кто-то помочь, как выполнить мою задачу?
Почему это происходит по строкам? MSSQL устанавливается на основе. Избегайте использования курсоров, особенно в триггерах - если вам не нравится жить в мире боли. – codingbadger
Я не делаю этого _in_ моего триггера. Я хочу сделать это для _test_ моего триггера. Мне нужен способ выполнить мой триггер на реальных данных. –
Хмм, если вы удаляете бит 'in @ actualrow', он возвращает всю строку обратно клиенту. Я не уверен, есть ли синтаксис, чтобы как-то вставить эту строку в другую таблицу. –