이 쿼리를 사용하여 mysql 테이블에 여러 행을 삽입한 후 insertid를 가져오려고 합니다
으아악하지만 SQL 구문 오류가 발생합니다
으아악삽입 ID를 얻는 방법
P粉6148403632024-03-27 00:53:20
OUTPUT INSERTED
구문은 Microsoft SQL Server 항목입니다. MySQL은 이 구문을 지원하지 않습니다.
귀하의 예에서는 id
값을 명시적으로 설정했으므로 해당 값을 반환할 필요가 없습니다. 삽입을 수행하기 전에 이미 알고 있는 고유한 값에서 가져오십시오.
삽입 중에 생성된 자동 증가 ID에 의존할 수 있습니다.
가장 최근에 삽입된 행의 자동 증가 ID를 얻으려면 INSERT 이후 별도의 쿼리에서 LAST_INSERT_ID() 함수 를 사용하세요.
LAST_INSERT_ID()는 삽입 중에 생성된 첫 번째 ID만 반환합니다. 다중 행 삽입을 수행하는 경우 후속 ID를 유추하는 것은 사용자의 몫입니다. 일반적으로 연속 값입니다. 예를 들어, MySQL JDBC 드라이버는 연속된 값에 의존하므로 대량 삽입 후 ID 집합을 반환할 수 있습니다.
그러나 변경하면 innodb_autoinc_lock_mode=2
연속 값이 보장되지 않으며 "인터리브" 방식으로 자동 증가 값을 할당하므로 동시 삽입은 생성된 집합 사이의 시퀀스에서 값을 얻을 수 있습니다. 다중 행 삽입 . 이는 기본 모드가 아니므로 일부러 설정해도 됩니다.