auto_increment를 사용하지않고 max값을 입력할 때 유용하다.

처음 들어갈 때 MAX 값이 NULL이다 그러므로 NULL일 경우 초기값이 ifnull로 0이 되도록 설정하였다.

 

(SELECT ifnull(MAX(num),0)+1 FROM board b)

참고로 board 뒤에 b를 붙인 이유는 You can't specify target table '테이블명' for update in FROM clause 에러가 발생하기 때문. 이 에러는 insert, update, delete에서 서브쿼리로 동일한 테이블의 조건을 사용할 경우 발생한다. 따라서 서브쿼리 내부의 테이블에 별칭을 부여하면 해결된다.

출처: https://sdevstudy.tistory.com/22 [.]

 

[전체코드]

INSERT INTO board VALUES((SELECT ifnull(MAX(num),0)+1 FROM board b), '나연','nayeon@naverc.om','나연없이 못나연','1234', NOW(),0,0,0,0,'안녕하세요','100.100.100.100');

+ Recent posts