์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[ORACLE] MySQL์—๋Š” AUTO_INCREMENT๊ฐ€ ์žˆ์ง€๋งŒ..

CS/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๐Ÿ’ฟ

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2024. 3. 16. 21:57

๋ณธ๋ฌธ

์˜ค๋ผํด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;

IDENTITY ์ปฌ๋Ÿผ (12c๋ฒ„์ „๋ถ€ํ„ฐ ์‚ฌ์šฉ๊ฐ€๋Šฅ)

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');

[์ถœ์ฒ˜]

https://suover.com/oracle-%EC%98%A4%EB%9D%BC%ED%81%B4-%EC%9E%90%EB%8F%99%EC%A6%9D%EA%B0%80-auto_increment-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC/

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ