Sql Server에서 자동 증분을 만드는 방법
소개
최근에 저는 postgresql 데이터베이스를 SQL 서버로 마이그레이션했습니다. 내가 만난 한 가지 문제는 Id 열을 마이그레이션하고 이전과 동일한 값을 유지하는 것이었습니다. SQL 서버에서는 열을 ID로 변경할 수 없으며 ID 열을 편집할 수 없습니다. 온라인 리소스에서는 새 열을 만들거나 각 행을 다시 삽입할 것을 제안했지만 큰 db에 Azure DB 마이그레이션 도구를 사용하고 있었고 이전 db가 삭제되었기 때문에 순차적 ID가 보장되지 않았기 때문에 이는 좋은 옵션이 아니었습니다. 내 솔루션은 Id 열에 대해 내 자신의 자동 증가를 구현하는 것이 었습니다.
설정
예제는 다소 복잡하지만 작은 예제를 설정하겠습니다.
직원 테이블부터 시작합니다.
CREATE TABLE employees (
id int not null,
first_name VARCHAR (50) NOT NULL,
last_name VARCHAR (50) NOT NULL,
);
Azure 마이그레이션 도구를 사용할 때 이전 데이터를 ID에 매핑할 수 없으므로 ID에
int
를 사용합니다.이제 이전 데이터베이스에서 일부 기존 데이터를 삽입할 수 있습니다.
insert into employees (id, first_name, last_name)
values
(1, 'keith', 'holliday'),
(2, 'jon', 'doe'),
(4, 'jon', 'dane');
행 3이 없다는 점에 유의하십시오. 이는 이전 데이터베이스에서 행이 삭제되었기 때문입니다. 이전 데이터베이스에는 해당 ID에 의존하는 관계가 많기 때문에 ID를 재설정할 수 없습니다.
지금 삽입하면 id 열이 자동으로 증가하지 않습니다. 이를 해결하기 위해 테이블에 대한 시퀀스를 생성하고 다음 값을 id 열의 기본값으로 설정해 보겠습니다.
CREATE SEQUENCE employees_ids
START WITH 5
INCREMENT BY 1;
1씩 증가하고 테이블의 현재 최대 ID보다 하나 더 많은 5에서 시작하는 시퀀스를 만들었습니다. 이제 id 열의 기본값을 설정해야 합니다.
alter table employees
add constraint employees_id
default (next value for employees_ids) for id;
위의 내용은 삽입 시 시퀀스의 다음 값을 크롤링하는 제약 조건을 만듭니다. 새 직원을 추가하여 이를 테스트할 수 있습니다.
insert into employees (first_name, last_name)
values
('ash', 'ketchum');
ID
이름
성
1
키스
홀리데이
2
존
암사슴
4
존
덴마크 사람
5
금연 건강 증진 협회
케첨
마지막으로 이제 이것을 기본 키로 만들 수 있습니다.
ALTER TABLE employees
ADD CONSTRAINT PK_employees_id PRIMARY KEY (id);
Reference
이 문제에 관하여(Sql Server에서 자동 증분을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thehollidayinn/how-to-create-auto-increment-in-sql-server-318n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)