2012-05-30 3 views
1

Prac1prac2이라는 테이블이 2 개 있습니다. Prac1에 트리거가 있습니다. 삽입이 prac1에 발생하면 prac2 (트리거 코드)에 동일한 항목이 들어갑니다. 그 중에서 상위 3 개의 ID를 prac1에서 선택하고 prac1에 값 (다른 열)을 다시 삽입합니다. 단 하나만하위 쿼리가 두 개 이상의 값을 반환했습니다. =,! =

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

내가 방아쇠를 제거하고 때, 내 SP가 실행 얻을, 3 항목이이 상황을 처리하는 table.How에 추가됩니다 : 행은 3.Query가되어 있지 추가됩니다?

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 

포스트 트리거 코드, 당신은 트리거 첫 번째해야 삽입 참조 라인 방아쇠. 그럼에도 불구하고 삽입물이 다시 삽입 할 수 있습니다. 따라서 사용을 중지하고 다시 사용하도록 설정해야합니다.

관련 문제