2013-01-02 3 views
0

기본 키 테이블의 레코드 하나가 외래 키의 많은 레코드와 일치하는 두 테이블 (기본 키 -> 외래 키)이 있다고 가정하면 기본 키와 두 기본 키 모두에 대해 삽입 페이지 (예 : ASP.NET 사용)를 만들고 싶습니다. 테이블 및 외래 키 테이블, 기본 키 값을 외래 키 테이블에 삽입하려면 어떻게해야합니까? (대개 나는 (PK의) 최대 값을 가졌지 만 더 나은 솔루션을 찾기 위해 호기심이 생겼습니다)기본 키 처리 - 외래 키 테이블 삽입?

+1

사용중인 데이터베이스 시스템에 따라 다릅니다. 하지만'MAX()'는 보통 INSERT와 SELECT 사이의 테이블에 대한 독점적 인 접근을 필요로하기 때문에 (직렬화 된 트랜잭션이나 손가락을 교차하여 바라는 것) –

답변

0

ASP.NET 사용에 대해 언급 했으므로 SQL Server를 사용한다고 가정합니다. Max (PK)를 사용하는 것은 다중 사용자 시스템에서는 좋지 않습니다. 결국 결국 잘못된 기본 키 값을 얻게 될 것이기 때문입니다. 고려해야 할 리소스 문제도 있습니다. 일반적으로이 접근법은 피해야합니다.

원하는 작업을 수행 할 수있는 방법에는 여러 가지가 있습니다. 한 가지 방법은 저장 프로 시저를 통해 삽입을 수행하는 것입니다. 기본 키 행을 작성하기위한 저장 프로시 듀어는 새 행의 ID 값을 리턴하고, 그런 다음 외래 키 행을 삽입하는 데 사용될 수 있습니다. 하지만 Max (PK Value)는 사용하지 마십시오. SCOPE_IDENTITY() 값을 사용하십시오. 여기서는 PK 값에 ID 유형을 사용한다고 가정합니다. 당신은 당신이 실제로 사용하고있는 것을 진술하지 않습니다.

+0

그리고 그가 사용하고 있다면 MySQL의 경우 SCOPE_IDENTITY() 대신 LAST_INSERT_ID()가됩니다. –