2013-08-12 2 views
1

저장 프로 시저를 사용하는 것이 처음입니다. 저장 프로 시저를 사용하여 업데이트하고 삽입하는 가장 좋은 방법은 무엇입니까? 두 테이블이 있고 고유 한 ID로 일치시킬 수 있습니다. ID가로드 테이블과 대상 테이블 모두에 있으면 업데이트하려고합니다. 항목이 대상 테이블에없는 경우 삽입하려고합니다. 예제 템플릿이 도움이 될 것입니다. 감사합니다!저장 프로 시저 - 업데이트 및 삽입

+0

아마도 저장 프로 시저가 필요하지 않습니다. 먼저 RDBMS (MySql, SQL Server, Oracle ...)를 사용하고있는 버전과 사용하고있는 버전을 알려주십시오. – peterm

+0

죄송합니다, SQL Server 2008을 사용하고 있습니다 – Bobcat88

답변

0

잘 이해하면 한 테이블에서 값을 선택하여 다른 테이블에 삽입하려고합니다. 두 번째 테이블에 ID가 있으면 행을 업데이트해야합니다. 잘못된 것이 아니라면 다음과 같은 것이 필요합니다.

mysql> select * from table_1; 
+----+-----------+-----------+ 
| id | name  | last_name | 
+----+-----------+-----------+ 
| 1 | fagace | acero  | 
| 2 | ratangelo | saleh  | 
| 3 | hectorino | josefino | 
+----+-----------+-----------+ 
3 rows in set (0.00 sec) 

mysql> select * from table_2; 
+----+-----------+-----------+ 
| id | name  | last_name | 
+----+-----------+-----------+ 
| 1 | fagace | acero  | 
| 2 | ratangelo | saleh  | 
+----+-----------+-----------+ 
2 rows in set (0.00 sec) 

mysql> insert into table_2 select t1.id,t1.name,t1.last_name from table_1 t1 on duplicate key update name=t1.name, last_name=t1.last_name; 
Query OK, 1 row affected (0.00 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> select * from table_2; 
+----+-----------+-----------+ 
| id | name  | last_name | 
+----+-----------+-----------+ 
| 1 | fagace | acero  | 
| 2 | ratangelo | saleh  | 
| 3 | hectorino | josefino | 
+----+-----------+-----------+ 
3 rows in set (0.00 sec) 

mysql> 
+0

OP는 MySql이 아닌 SQL Server를 사용하고 있습니다. – peterm

0

SQL MERGE 문을 찾아야합니다.

UPSERT를 수행 할 수 있습니다 (예 : 키 값이없는 경우 INSERT, 키가없는 경우 UPDATE). 당신이 더 복잡하게 업데이 트를 않습니다 수행하기 전에

http://technet.microsoft.com/en-us/library/bb510625.aspx

그러나, 귀하의 요구 사항은이 개 곳에서 키 값을 확인합니다. 나는 이것을 시도하지는 않았지만 VIEW 또는 CTE를 사용하여 두 테이블에 ID가 존재하는 경우를 설정하는 데 사용할 수 있다고 생각합니다. & CTE/VIEW에서 MERGE를 기반으로합니다.

하지만 확실히 MERGE를 (을) 먼저보고 시작하십시오!