다음은 원하는 작업을 수행하는 두 가지 방법입니다. EmpCode
에 대한 고유 한 제약 조건 위반으로 끝날 수도 있다는 사실에 대해 걱정할 필요가 없습니다 :).
1. 사용 scope_identity()
는 마지막으로 삽입 된 ID를 얻을 EmpCode
을 계산하는 것을 사용합니다.
표 정의 :
create table Employees
(
ID int identity primary key,
Created datetime not null default getdate(),
DistrictCode char(2) not null,
EmpCode char(10) not null default left(newid(), 10) unique
)
직원에 한 행을 추가합니다. 트랜잭션에서 수행되어야 하는가하면 EmpCode
에 left(newid(), 10)
에서 기본 임의의 값 왼쪽되지 않습니다 있는지 확인합니다 :
declare @ID int
insert into Employees (DistrictCode) values ('AB')
set @ID = scope_identity()
update Employees
set EmpCode = cast(year(Created) as char(4))+DistrictCode+right([email protected], 4)
where ID = @ID
2
가
computed column
EmpCode
을 확인합니다.
표 정의 :
create table Employees
(
ID int identity primary key,
Created datetime not null default getdate(),
DistrictCode char(2) not null,
EmpCode as cast(year(Created) as char(4))+DistrictCode+right(10000+ID, 4) unique
)
종업원에 하나 개의 행을 추가
insert into Employees (DistrictCode) values ('AB')
자동 증가 열을 사용하거나 한 번에 하나씩 만 실행되도록 쿼리를 트랜잭션으로 설정합니다. – Joe
자동 증가. – RKh
주어진 지구의 최대 ID를 가져 오시겠습니까? 그 신분증으로 뭐하니? ID 열은 ID 열입니까? 언제 쿼리를 실행합니까? 삽입 직후에 새로 생성 된 ID를 사용하고 싶습니까? –