2012-05-30 7 views
1

У меня есть 2 таблицы под названием Prac1 и prac2. Prac1 имеет триггер.Когда вставка происходит в prac1, эта же запись идет в prac2 (код триггера). Я сделал один sp, в котором выбираю верхний 3 id из prac1 и снова вставляем в prac1 с его значением (другой столбец). Но только один строка добавляются не 3.Query является:Подзапрос возвратил более 1 значения. Это недопустимо, когда подзапрос следует =,! =

Insert name,lname into prac1 where id in(select top3 id from prac1). 

Когда я удаление триггера, мой зр получить казнен и 3 записи добавляется в table.How, чтобы справиться с этой ситуацией?

prac1: Id, имя, Lname
prac2: Имя, Lname

+6

Звучит так, как ваш спусковой механизм сломан. Общей ошибкой является обращение только к изменениям одной строки. Отправьте свой код запуска. –

+1

А? Предоставленный запрос не является синтаксически действительным. –

ответ

0

Вы уверены, что ваш запрос работает? Поскольку, как уже указано в комментарии, синтаксис недействителен. Посмотрите в MSDN for more information Правильный синтаксис:

INSERT [INTO] 
     table_name [ (column_list) ] 
     { VALUES 
     ({ DEFAULT | NULL | expression } [ ,...n]) 
| derived_table 
     } 

Таким образом, ваш запрос вставки должен что-то вроде:

INSERT INTO prac1(name, lname) 
SELECT TOP 3 name, lname 
    FROM prac1 

сообщение кода триггера, линии вы видите вставлено должен быть первым, который инициирует вызывать. Тем не менее, вставки могут вызвать его снова. Поэтому, возможно, вам нужно будет отключить его и повторно использовать.

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

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