[SQL] SQL - INSERT 및 ID 자동 증가 값을 잡기
SQLSQL - INSERT 및 ID 자동 증가 값을 잡기
는 SELECT와 같은 SQL에서 자동 id 값을 얻을 수있는 가장 좋은 방법은 무엇입니까?
포럼이 추가 상기 ";있다 반환 SCOPE_IDENTITY ()를" ASP에서 SQL 작품의 끝 부분이다.
PHP에 상응하는 방법이 있나요?
해결법
-
==============================
1.그것은 당신의 데이터베이스 서버에 따라 달라집니다. 즉시 삽입 쿼리 후 MySQL은, 호출에 mysql_insert_id ()를 사용. PostgreSQL을, 첫 번째 쿼리를 사용하여 순서에 "NEXTVAL (서열)을 선택합니다"하고 삽입 쿼리의 키를 포함한다.
그것은 당신의 데이터베이스 서버에 따라 달라집니다. 즉시 삽입 쿼리 후 MySQL은, 호출에 mysql_insert_id ()를 사용. PostgreSQL을, 첫 번째 쿼리를 사용하여 순서에 "NEXTVAL (서열)을 선택합니다"하고 삽입 쿼리의 키를 포함한다.
에 대한 쿼리 다른 요청을 동시에 기록을 삽입하면 작동하지 않을 수 있습니다 "TBL에서 + 1을 최대 (ID)를 선택합니다."
-
==============================
2.포스트 그레스에서 가장 좋은 방법은 같은 것을 할 것입니다 :
포스트 그레스에서 가장 좋은 방법은 같은 것을 할 것입니다 :
insert into foos(name) values ('my_foo') returning id;
-
==============================
3.그것은 당신이 사용하고있는 데이터베이스 엔진에 따라 달라집니다. 일부 DBMS는, 파이어 버드와 같은 예를 들어, 당신이 당신의 쿼리에 추가 할 수있는 조항을 RETURNING있다. 당신이 자동 증가 열라는 이름의 ID로 TABLE1라는 이름의 테이블이있는 경우 예를 들어, 당신은이를 사용할 수 있습니다 :
그것은 당신이 사용하고있는 데이터베이스 엔진에 따라 달라집니다. 일부 DBMS는, 파이어 버드와 같은 예를 들어, 당신이 당신의 쿼리에 추가 할 수있는 조항을 RETURNING있다. 당신이 자동 증가 열라는 이름의 ID로 TABLE1라는 이름의 테이블이있는 경우 예를 들어, 당신은이를 사용할 수 있습니다 :
insert into TABLE1(columns...) values (values...) returning ID;
그리고 그것은 단지 일반 SELECT 문처럼 삽입 된 ID를 반환합니다.
-
==============================
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.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.매우 조심 : 분명히 NEXTVAL (서열)을 선택합니다 높은 동시성에서 작업하지 않습니다 - 다른 연결을 삽입 한 시간과 당신이 선택의 nextval (서열)라는 시간 사이에 삽입 할 수 있습니다. 항상 높은 동시성 테스트 하네스 등의 코드를 테스트합니다.
매우 조심 : 분명히 NEXTVAL (서열)을 선택합니다 높은 동시성에서 작업하지 않습니다 - 다른 연결을 삽입 한 시간과 당신이 선택의 nextval (서열)라는 시간 사이에 삽입 할 수 있습니다. 항상 높은 동시성 테스트 하네스 등의 코드를 테스트합니다.
-
==============================
7.SQL 서버에서 select 문을 사용하여 삽입은 어떤 기록으로 이동하는 정체성을 확인해야 할 수도 있습니다 어떤 다른 열 ID 값과 반환됩니다 출력 절을 할 수 있습니다. 당신이 값 절을 사용하는 경우, 즉시 삽입 후)을 선택 SCOPE_IDENTITY를 (사용합니다.
SQL 서버에서 select 문을 사용하여 삽입은 어떤 기록으로 이동하는 정체성을 확인해야 할 수도 있습니다 어떤 다른 열 ID 값과 반환됩니다 출력 절을 할 수 있습니다. 당신이 값 절을 사용하는 경우, 즉시 삽입 후)을 선택 SCOPE_IDENTITY를 (사용합니다.
from https://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 예외 : SQLException :하는 executeQuery 방법은 업데이트를 사용할 수 없습니다 (0) | 2020.07.03 |
---|---|
[SQL] 어떻게 VBA에서 변수로 SQL 쿼리의 결과를 저장하려면? (0) | 2020.07.03 |
[SQL] 어떻게 내가 준비된 문을 사용하지 않고 SQL을 소독 (0) | 2020.07.03 |
[SQL] 와 BY와 오라클의 KEEP없이 PARTITION (0) | 2020.07.03 |
[SQL] 여러 테이블이 많은 관계로 하나가 필요합니다 (0) | 2020.07.03 |