mysql
오라클에서 auto_encrement 구현하기 feat. 트리거 + 시퀀스
에스크리토
2021. 11. 4. 13:58
반응형
오라클은 auto_encrement가 없다. 머 이런...
그래서 시퀀스라는걸 만들어서 1씩 증가시켜줘야한다.
시퀀스부터 만들어보자.
CREATE SEQUENCE TABLE_NAME_ID_SEQ
START WITH 1
INCREMENT BY 1
MAXVALUE 9999999999999999999999999999
MINVALUE 1
NOCYCLE;
잘 만들어졌는지 확인해보자
SELECT * FROM USER_SEQUENCES ;
이제 이걸 쓸대마다 TABLE_NAME_ID_SEQ.NEXTVAL 을 사용해서 1씩 증가해주면 된다. 하지만 쿼리에 이렇게 일일이 넣으면 귀찮다.
그래서 트리거를 이용해서 자동으로 증가하도록 만들어보자.
CREATE OR REPLACE TRIGGER TABLE_NAME_INSERT
BEFORE INSERT
ON TABLE_NAME FOR EACH ROW
BEGIN
SELECT TABLE_NAME_ID_SEQ.NEXTVAL INTO :new.id FROM dual;
END;
이렇게 해주면 mysql의 auto_encrement처럼 사용할 수 있다.
쉽지 않다.
오라클이 불편한게 많다.
반응형