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');
'[DB]' 카테고리의 다른 글
[오라클] 오라클 버전 확인 방법 (0) | 2020.01.04 |
---|---|
[DB 개념] SQL문에서 데이터 사용방법(기본) (0) | 2019.12.20 |
[DB 개념] Group by에 관하여 (0) | 2019.12.09 |
[DB개념] 식별, 비식별관계 (0) | 2019.12.07 |
[오라클] 복합키에 관하여(pk 2개) (0) | 2019.12.06 |