์ค๋ผํดDB(12.1๋ฒ์ ์ด์ )์๋ auto_increment ๊ธฐ๋ฅ์ด ์๋ค
๊ทธ๋์, ์ํ์ค/ํธ๋ฆฌ๊ฑฐ๋ฅผ ์์ฑํด์ ์ฌ์ฉํด์ผ ํ๋ค.
12.1๋ฒ์ ๋ถํฐ ์ง์ํ๋ auto increment ์ ๋ด๋ถ์ ์ผ๋ก ์ํ์ค๋ฅผ ์ด์ฉํ๋ค๊ณ ํ๋ค
CREATE SEQUENCE TEST_SEQ
START WITH 1
INCREMENT BY 1
MAXVALUE 9999
NOCYCLE
NOCACHE;
cycle : ์ต์, ์ต๋๊ฐ์ ๋ค๋ค๋ฅด๋ฉด start with ๊ฐ์ผ๋ก ๋๋์๊ฐ
nocycle : ์ต์, ์ต๋๊ฐ์ ๋ค๋ค๋ฅด๋ฉด ์๋ฌ๊ฐ ๋ฐ์
cache : ๋ฉ๋ชจ๋ฆฌ์์ ์ํ์ค ๊ฐ์ ๊ด๋ฆฌ
drop sequence ์ํ์ค๋ช ;
alter sequnce ์ํ์ค๋ช ...; -- start with๋ ์์ ๋ถ๊ฐ๋ฅ
select ์ํ์ค๋ช .nextval from dual;
select ์ํ์ค๋ช .currval from dual;
INSERT INTO TEST(ID, NAME) VALUES(TEST_SEQ.NEXTVAL, "eundms");
1) ์ํ์ค ํ์ฌ๊ฐ ํ์ธ
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'TEST_SEQ';
2) ์ํ์ค์ Increment๋ฅผ ํ์ฌ๊ฐ๋งํผ ๋นผ๋๋ก ์ค์ (์ํ์ค์ ์ต๋๊ฐ์ผ๋ก ์ค์ )
ALTER SEQUENCE TEST_SEQ INCREMENT BY -7;
3) ์ํ์ค์์ ๋ค์ ๊ฐ์ ๊ฐ์ ธ์ด
SELECT TEST_SEQ.NEXTVAL FROM DUAL;
4) ์ํ์ค INCREMENT ๊ฐ์ 1๋ก ์ค์
ALTER SEQUENCE TEST_SEQ INCREMENT BY 1;
CREATE OR REPLACE TRIGGER TEST_BEFORE_INSERT
BEFORE INSERT ON TEST -- 'TEST' ํ
์ด๋ธ์ ์ฝ์
ํ๊ธฐ ์ ์ ์คํ
FOR EACH ROW -- ๊ฐ ํ์ ๋ํด ์คํ
BEGIN
SELECT TEST_SEQ.NEXTVAL -- ์ํ์ค์์ ๋ค์ ๊ฐ์ ๊ฐ์ ธ์ด
INTO :new.id -- ์ ํ์ 'id' ์ปฌ๋ผ์ ์ฝ์
FROM dual;
END;
CREATE TABLE test (
id NUMBER GENERATED BY DEFAULT AS IDENTITY
START WITH 1000 INCREMENT BY 1,
name VARCHAR2(100)
);
INSERT INTO test (name) VALUES ('eundms');
[์ถ์ฒ]