Her er to måder at gøre, hvad du vil. Det faktum, at du kan ende med en unik overtrædelse af begrænsninger på EmpCode
Jeg vil lade dig bekymre dig om :).
1. Brug scope_identity()
for at få det sidst indsatte ID og bruge det til at beregne EmpCode
.
Tabeldefinition:
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
)
Tilføj en række til Medarbejdere. Bør udføres i en transaktion for at være sikker på, at du ikke vil stå tilbage med standard tilfældig værdi fra left(newid(), 10)
i EmpCode
:
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. Lav EmpCode
en beregnet kolonne
.
Tabeldefinition:
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
)
Tilføj en række til medarbejdere:
insert into Employees (DistrictCode) values ('AB')