PostgreSQL 데이터베이스에서 고유 키가 필요한 테이블과 기본 키가있는 테이블이 있습니다.거기에 PostgreSQL에서 삽입이 실패하면 nextval() 호출을 피할 수있는 방법이 있습니까?
CREATE TABLE users (
id INTEGER PRIMARY KEY DEFAULT nextval('groups_id_seq'::regclass),
name VARCHAR(255) UNIQUE NOT NULL
);
INSERT users (name) VALUES ('foo');
INSERT users (name) VALUES ('foo');
INSERT users (name) VALUES ('bar');
번째 입력이 실패하지만 ID 번호에 갭을 남긴다 첨가 '바'때 시퀀스 groups_id_seq는 이미 증가된다.
다른 제약 조건이 충족되는 경우에만 PostgreSQL에 다음 값을 가져 오도록 지시하는 방법이 있습니까? 아니면 이름이 중복되지 않으면 SELECT를 사용하여 먼저 확인해야합니까? 이것은 여전히 간격의 부족을 보장하지는 않지만 적어도 동시에 동일한 이름을 삽입하려고하는 다른 프로세스가있을 때 드문 경우로 번호를 줄입니다
참조 : http://stackoverflow.com/a/9985219/398670 –
가능한 [SQL 테이블의 기본 키 ID 사이의 간격] (http://stackoverflow.com/questions/39099905/gaps-between- primary-key-id-in-sql-table) – e4c5