사용자 도구

사이트 도구


database:mysql:auto_increment

MySQL Auto Increment

  • auto_increment 키 값을 INSERT 시에 사용하는 방법. 참조
    INSERT INTO temp ( name, foo ) 
     
      SELECT 'aaa', CONCAT('aaa', 
     
       COALESCE((
     
         SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.tables 
     
           WHERE TABLE_NAME = 'temp' AND table_schema = DATABASE()
     
       ), 0));

auto_increment 문제점

  • MyISAM에서는 서버를 내렸다 올려도 최종 Auto increment 값이 변함이 없지만, InnoDB에서는 서버를 내렸다 올릴 때마다 SELECT MAX(ai_col) FROM t for UPDATE의 값으로 다음 Auto Increment값이 정해진다. MySQL InnoDB Auto Increment 참조.
  • InnoDB에서 auto_increment 필드를 insert 후 다시 삭제한 뒤에 DB를 껐다켜면 auto_increment가 뒤로 돌아간다.
  • 예를들어, 1, 2, 3, 4, 5까지 auto_increment 증가 후에 5 row를 삭제하고 DB를 껐다켜고 다시 insert를 하면 새로운 row의 auto_increment값이 5가 된다. 원칙적으로는 6이 되어야 한다.

다음 AUTO_INCREMENT 값 미리보기

SELECT `AUTO_INCREMENT`
FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND   TABLE_NAME   = 'TableName';

0 에 대한 반응

database/mysql/auto_increment.txt · 마지막으로 수정됨: 2015/11/13 17:38 저자 kwon37xi