====== MySQL Auto Increment ======
* auto_increment 키 값을 INSERT 시에 사용하는 방법. [[http://database.sarang.net/?inc=read&aid=30306&criteria=mysql&subcrit=qna&id=&limit=20&keyword=&page=1|참조]]
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값이 정해진다. [[http://gywn.net/2013/02/mysql-innodb-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 값 미리보기 =====
* 실제 값의 증가 없이 다음 AUTO_INCREMENT 값을 확인해보기. [[http://stackoverflow.com/questions/15821532/get-current-auto-increment-value-for-any-table|mysql - Get current AUTO_INCREMENT value for any table]]
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND TABLE_NAME = 'TableName';
===== 0 에 대한 반응 =====
* ''NO_AUTO_VALUE_ON_ZERO'' : ''0''에 대해서 기본으로 AUTO_INCREMENT를 올려주는데, 이 값을 설정하면 ''0'' 에대해 AUTO_INCREMENT 변경을 하지 않는다.
* http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21330&cat1=5&cat2=120&cat3=138&lang=k