복붙노트

[SQL] SQL - INSERT 및 ID 자동 증가 값을 잡기

SQL

SQL - INSERT 및 ID 자동 증가 값을 잡기

는 SELECT와 같은 SQL에서 자동 id 값을 얻을 수있는 가장 좋은 방법은 무엇입니까?

포럼이 추가 상기 ";있다 반환 SCOPE_IDENTITY ()를" ASP에서 SQL 작품의 끝 부분이다.

PHP에 상응하는 방법이 있나요?

해결법

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

    1.그것은 당신의 데이터베이스 서버에 따라 달라집니다. 즉시 삽입 쿼리 후 MySQL은, 호출에 mysql_insert_id ()를 사용. PostgreSQL을, 첫 번째 쿼리를 사용하여 순서에 "NEXTVAL (서열)을 선택합니다"하고 삽입 쿼리의 키를 포함한다.

    그것은 당신의 데이터베이스 서버에 따라 달라집니다. 즉시 삽입 쿼리 후 MySQL은, 호출에 mysql_insert_id ()를 사용. PostgreSQL을, 첫 번째 쿼리를 사용하여 순서에 "NEXTVAL (서열)을 선택합니다"하고 삽입 쿼리의 키를 포함한다.

    에 대한 쿼리 다른 요청을 동시에 기록을 삽입하면 작동하지 않을 수 있습니다 "TBL에서 + 1을 최대 (ID)를 선택합니다."

  2. ==============================

    2.포스트 그레스에서 가장 좋은 방법은 같은 것을 할 것입니다 :

    포스트 그레스에서 가장 좋은 방법은 같은 것을 할 것입니다 :

    insert into foos(name) values ('my_foo') returning id;
    
  3. ==============================

    3.그것은 당신이 사용하고있는 데이터베이스 엔진에 따라 달라집니다. 일부 DBMS는, 파이어 버드와 같은 예를 들어, 당신이 당신의 쿼리에 추가 할 수있는 조항을 RETURNING있다. 당신이 자동 증가 열라는 이름의 ID로 TABLE1라는 이름의 테이블이있는 경우 예를 들어, 당신은이를 사용할 수 있습니다 :

    그것은 당신이 사용하고있는 데이터베이스 엔진에 따라 달라집니다. 일부 DBMS는, 파이어 버드와 같은 예를 들어, 당신이 당신의 쿼리에 추가 할 수있는 조항을 RETURNING있다. 당신이 자동 증가 열라는 이름의 ID로 TABLE1라는 이름의 테이블이있는 경우 예를 들어, 당신은이를 사용할 수 있습니다 :

    insert into TABLE1(columns...) values (values...) returning ID;
    

    그리고 그것은 단지 일반 SELECT 문처럼 삽입 된 ID를 반환합니다.

  4. ==============================

    4.마이크로 소프트 SQL 트랜잭션에서는 @@ IDENTITY를 사용할 수 있습니다.

    마이크로 소프트 SQL 트랜잭션에서는 @@ IDENTITY를 사용할 수 있습니다.

    EG

    DECLARE @Table TABLE ( col0 INT IDENTITY, col1 VARCHAR(255), col2 VARCHAR(255))
    
    INSERT INTO @Table (col1, col2) VALUES ('Hello','World!')
    
    SELECT @@Identity
    
    SELECT * FROM @Table
    
  5. ==============================

    5.PHP에서 :에 mysql_insert_id () http://us3.php.net/mysql_insert_id

    PHP에서 :에 mysql_insert_id () http://us3.php.net/mysql_insert_id

    또는

    당신이 당신의 mysql을 선택 쿼리에서 번호를 생성하고자한다면, 당신은이를 사용할 수 있습니다 편집하다:

    SELECT LAST_INSERT_ID(`1`) + 1 FROM table 
    
  6. ==============================

    6.매우 조심 : 분명히 NEXTVAL (서열)을 선택합니다 높은 동시성에서 작업하지 않습니다 - 다른 연결을 삽입 한 시간과 당신이 선택의 nextval (서열)라는 시간 사이에 삽입 할 수 있습니다. 항상 높은 동시성 테스트 하네스 등의 코드를 테스트합니다.

    매우 조심 : 분명히 NEXTVAL (서열)을 선택합니다 높은 동시성에서 작업하지 않습니다 - 다른 연결을 삽입 한 시간과 당신이 선택의 nextval (서열)라는 시간 사이에 삽입 할 수 있습니다. 항상 높은 동시성 테스트 하네스 등의 코드를 테스트합니다.

  7. ==============================

    7.SQL 서버에서 select 문을 사용하여 삽입은 어떤 기록으로 이동하는 정체성을 확인해야 할 수도 있습니다 어떤 다른 열 ID 값과 반환됩니다 출력 절을 할 수 있습니다. 당신이 값 절을 사용하는 경우, 즉시 삽입 후)을 선택 SCOPE_IDENTITY를 (사용합니다.

    SQL 서버에서 select 문을 사용하여 삽입은 어떤 기록으로 이동하는 정체성을 확인해야 할 수도 있습니다 어떤 다른 열 ID 값과 반환됩니다 출력 절을 할 수 있습니다. 당신이 값 절을 사용하는 경우, 즉시 삽입 후)을 선택 SCOPE_IDENTITY를 (사용합니다.

  8. from https://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value by cc-by-sa and MIT license