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));
SELECT MAX(ai_col) FROM t for UPDATE
의 값으로 다음 Auto Increment값이 정해진다. MySQL InnoDB Auto Increment 참조.1, 2, 3, 4, 5
까지 auto_increment 증가 후에 5 row를 삭제하고 DB를 껐다켜고 다시 insert를 하면 새로운 row의 auto_increment값이 5
가 된다. 원칙적으로는 6
이 되어야 한다.SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'DatabaseName' AND TABLE_NAME = 'TableName';
NO_AUTO_VALUE_ON_ZERO
: 0
에 대해서 기본으로 AUTO_INCREMENT를 올려주는데, 이 값을 설정하면 0
에대해 AUTO_INCREMENT 변경을 하지 않는다.