2017-12-18 15 views
-2

두 테이블에 값을 삽입하는 저장 프로 시저를 만들려고합니다. tblAirporttblCountry. tblAirport에는 tblCountry을 참조하는 FK가 있고 tblCountry에 값을 넣으려면 tblAirport의 FK 값을 사용하고 싶습니다. 나는 SQL에 익숙하지 않고 이것을 달성하기 위해 SCOPE_IDENTITY() 함수를 사용해야한다고 생각하지만 구현 방법을 잘 모르겠습니다. 이것들은 내 테이블입니다.저장 프로 시저 및 Scope_Identity() SQL

tblAirport

PK INT IDENTITY(1,1), 
geoLocation GEOGRAPHY, 
ICAOCode VARCHAR(4), 
IATACode VARCHAR(3), 
strName VARCHAR(MAX), 
strCity VARCHAR(MAX), 
strCountry VARCHAR(MAX), 
degLat DECIMAL(7,2), 
minLat DECIMAL(7,2), 
secLat DECIMAL(7,2), 
Equator VARCHAR(1), 
degLong DECIMAL(7,2), 
minLong DECIMAL(7,2), 
secLong DECIMAL(7,2), 
Meridian VARCHAR(1), 
strElevation VARCHAR(5), 
FKCountry INT NULL 

tblCountry는

PK INT IDENTITY(1,1), 
strCountry VARCHAR(MAX) 

이 내가이 tblCountry 테이블에 국가를 삽입하는 방법을 모르는

CREATE PROCEDURE [dbo].spInsertAirport 
    @ICAOCode VARCHAR(4), 
    @IATACode VARCHAR(3), 
    @strName VARCHAR(MAX), 
    @strCity VARCHAR(MAX), 
    @strCountry VARCHAR(MAX), 
    @degLat DECIMAL(7,2), 
    @minLat DECIMAL(7,2), 
    @secLat DECIMAL(7,2), 
    @Equator VARCHAR(1), 
    @degLong DECIMAL(7,2), 
    @minLong DECIMAL(7,2), 
    @secLong DECIMAL(7,2), 
    @Meridian VARCHAR(1), 
    @strElevation VARCHAR(5), 
    @FKCountry INT 
AS 
BEGIN TRANSACTION 
BEGIN TRY 
    SET NOCOUNT ON 
    SET ANSI_WARNINGS OFF 

    INSERT INTO tblAirport (ICAOCode, IATACode, strName, strCity, strCountry, 
          degLat, minLat, secLat, Equator, 
          degLong, minLong, secLong, Meridian, strElevation) 
    VALUES (@IATACode, @strName, @strCity, @strCountry, 
      @degLat, @minLat, @secLat, @Equator, 
      @degLong, @minLong, @secLong, @Meridian, @strElevation) 

내 저장 프로 시저가 무엇인가 ; 어떤 도움이 굉장합니다

+0

'tblAirport' 테이블에'strCountry VARCHAR (MAX)'가있는 이유는 무엇입니까? 그것은'tblCountry' 테이블에서 가져와야합니다. 또한'tbl' 접두어를 쓸모 없게 제거하는 것을 고려하십시오. – Yuck

+0

그들은 모두 과제물입니다. –

답변

0

scope_identity는 필요하지 않습니다.

tblCountry를 확인하여 @strCountry 행이 이미 있는지 확인하십시오. 없는 경우에는 새 행을 삽입하십시오.

그런 다음 strCountry에 일치하는 행의 값으로 FKCountry을 설정하여 tblAirport를 업데이트하십시오.

업데이트를 사용하는 대신 삽입하는 동안이 작업을 수행 할 수도 있지만 매우 초보자 수준 인 것처럼 들리므로이 할당에 대해이 쉬운 접근 방법을 사용하십시오.

+0

tblCountry에서 무엇을 의미하는지 모르겠습니다. strCountry에 대한 열이 있습니다. 내가하려는 것은 저장 프로 시저를 사용하여이 테이블을 채우는 것입니다. 삽입 프로 시저에서 tblAirport를 채울 삽입이 있고 tblCountry에 대한 삽입을 만들고 싶지만 tblCountry에서 사용할 tblAirport의 국가 데이터를 원합니다. –

+0

무엇을 의미합니까? tblCountry에 SELECT를 수행하면됩니다. @strCountry 매개 변수에 대한 PK가 이미 있는지 확인하십시오. 그렇게하면 새 것을 삽입해야하는지 알 수 있습니다. 그건 그렇고, 당신은 그것을 거꾸로보고 있습니다. tblCountry에서 국가 데이터를 가져 와서 tblAirport에서 FK를 채 웁니다. 다른 방법은 아닙니다. –