Laravel에서 auto increment 값 얻기

지금까지 다음과 같은 방법으로 테이블의 ID 최대 값을 얻었습니다.
$maxId = Users::max('id') + 1;

또는
$maxId = DB::table('users')
          ->select('id')
          ->oredrby('id', 'desc')
          ->first()->id;

전자는 테이블의 레코드수가 대량이 되면 느려지므로, 데이터가 대량이 되는 경우는 후자를 사용하고 있었습니다.

하지만 에러등 일어나 데이터가 롤백 되었을 경우 빠짐번이 생깁니다.
결과적으로 하위 테이블이 있으면 데이터 불일치가 발생합니다.
무슨 일이라면







따라서 다음 쿼리로 auto increment 값을 얻습니다.
SELECT
 AUTO_INCREMENT
FROM
 INFORMATION_SCHEMA.TABLES
WHERE
 TABLE_SCHEMA = 'DB名'
 AND TABLE_NAME = 'テーブル名'
;

라라벨이라면
$maxId = DB::table("INFORMATION_SCHEMA.TABLES")
            ->select("AUTO_INCREMENT")
            ->where("TABLE_SCHEMA", "DB名")
            ->where("TABLE_NAME", "テーブル名")
            ->first()->AUTO_INCREMENT;

이제 자식 테이블에서도 auto increment 값을 등록할 수 있습니다.

좋은 웹페이지 즐겨찾기