복붙노트

[SQL] 어떻게 ID 값을 얻기 위해 INSERT 문 OUTPUT 절을 사용합니까?

SQL

어떻게 ID 값을 얻기 위해 INSERT 문 OUTPUT 절을 사용합니까?

나는 삽입 문 등이있는 경우 :

INSERT INTO MyTable
(  
  Name,
  Address,
  PhoneNo
)
VALUES
(
  'Yatrix',
   '1234 Address Stuff',
   '1112223333'
)

어떻게 OUTPUT 절을 사용하여 (ID라고도 함) 새 행의 ID 값에 @var INT를 설정합니까? 나는 예를 들어, 테이블 변수에 INSERTED.Name 퍼팅의 샘플을 본 적이 있지만 내가 아닌 테이블 변수로를 얻을 수 없습니다.

나는 OUPUT INSERTED.Id AS의 @var, SET의 @var = INSERTED.Id을 시도했지만, 어느 쪽도 아니는 일 없다.

해결법

  1. ==============================

    1.당신도이 같은 SSMS 콘솔에 새로 삽입 된 ID의 존재 출력을 할 수 있습니다 :

    당신도이 같은 SSMS 콘솔에 새로 삽입 된 ID의 존재 출력을 할 수 있습니다 :

    INSERT INTO MyTable(Name, Address, PhoneNo)
    OUTPUT INSERTED.ID
    VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
    

    당신은 예로부터이 사용할 수 있습니다 당신이 당신의 전화 응용 프로그램의 ID를 다시 얻을 필요가있을 때 C #을, -) 단지 (.ExecuteScalar으로 SQL 쿼리를 실행합니다 (대신 .ExecuteNonQuery의 ()) 결과 ID를 다시 읽을 수 있습니다.

    당신이 (나중에 추가 처리를 위해, 예를 들어) T-SQL 내에서 새로 삽입 된 ID를 캡처해야하는 경우 또는, 당신은 테이블 변수를 작성해야합니다 :

    DECLARE @OutputTbl TABLE (ID INT)
    
    INSERT INTO MyTable(Name, Address, PhoneNo)
    OUTPUT INSERTED.ID INTO @OutputTbl(ID)
    VALUES ('Yatrix', '1234 Address Stuff', '1112223333')
    

    이 방법을 사용하면 @OutputTbl에 여러 값을 넣고 그 위에 추가 처리를 할 수 있습니다. 또한 여기 "출력 대상"과 같은 "일반"임시 테이블 (#temp) 또는 "진짜"영구 테이블을 사용할 수 있습니다.

  2. from https://stackoverflow.com/questions/10999396/how-do-i-use-an-insert-statements-output-clause-to-get-the-identity-value by cc-by-sa and MIT license