-
postgreSQL에서 Auto Increment 사용하기Database 2023. 4. 19. 15:18
프로젝트 진행 중에 table에 Auto Increment가 설정 안 되어 있는 것을 발견했다.
이 때까지 JPA로만 써와서 직접적으로 DB에서 설정할 일이 없었는데, 이번 기회에 새로 알게 된 것이 있었다.
각 DB마다 Auto Increment를 설정하는 것이 조금씩 다르다. Sequence를 생성하는 게 별 것 아니지만 귀찮은 일인 것 같아서 DBeaver에서 해당 기능이 없는가 찾아봤는데, 못 찾았다.
이번 기회를 통해 JPA가 진짜 편하다는 것을 다시 느꼈다.
MySQL
MySQL에서는 쉽게 설정이 가능하다.
-- 신규 생성 CREATE TABLE table_name ( id INT AUTO_INCREMENT PRIMARY KEY, ); -- 이미 존재 ALTER TABLE table_name MODIFY id INT AUTO_INCREMENT;
PostgreSQL
PostgreSQL에서는 Auto Increment를 위해 우선 Sequence를 생성해 주고, 해당 시퀀스를 DEFAULT로 설정해 주어야 한다.
-- 시퀀스 생성 CREATE SEQUENCE sequence_name START 1 INCREMENT 1 MINVALUE 1 MAXVALUE 100000 CACHE 1; -- 테이블 생성 CREATE TABLE table_name ( id INT DEFAULT NEXTVAL('sequence_name') PRIMARY KEY, ... ); -- 테이블이 이미 존재할 경우 ALTER TABLE table_name ALTER COLUMN id SET DEFAULT NEXTVAL('sequence_name');
Oracle
oracle에서도 psql과 마찬가지로 Sequence를 사용한다.
-- 시퀀스 생성 CREATE SEQUENCE sequence_name START WITH 1 INCREMENT BY 1 MAXVALUE 100000 NOCYCLE NOCACHE; -- 테이블 생성 CREATE TABLE table_name ( id NUMBER DEFAULT sequence_name.NEXTVAL PRIMARY KEY, ... ); -- 이미 테이블이 존재할 경우 ALTER TABLE table_name MODIFY id DEFAULT sequence_name.NEXTVAL;
MS SQL
ms sql에서는 Indentity 키워드를 통해 Auto Increment를 설정한다.
CREATE TABLE example ( id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(50) );
MongoDB
mongoDB에서는 ObjectId 타입의 자동 생성 필드를 사용하여 구현한다. 이 필드는 BSON(ObjectId) 형태로 저장된다.
db.createCollection("example", { validator: { $jsonSchema: { bsonType: "object", required: ["_id", "name"], properties: { _id: { bsonType: "objectId", description: "Auto Incremented Id" }, name: { bsonType: "string", description: "Name of the example" } } } } })
'Database' 카테고리의 다른 글
[SQL] SET FOREIGN_KEY_CHECKS와 외래키 제약조건 (0) 2023.03.29 [대용량 시스템] Scale-up 과 Scale-out의 장단점 (0) 2023.02.21 [데이터 웨어하우스] Snowflake schema에 대한 간단 요약 (0) 2023.02.20 [데이터 웨어하우스] Star schema에 대한 간단 요약 (0) 2023.02.15 데이터 웨어하우스 - DW 용어 정리 (0) 2023.02.14