Hier zijn twee manieren om te doen wat je wilt. Het feit dat u zou kunnen eindigen met een unieke beperkingsschending op EmpCode
Ik laat je zorgen over :).
1. Gebruik scope_identity()
om de laatst ingevoerde ID te krijgen en die te gebruiken om EmpCode
te berekenen .
Tabeldefinitie:
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
)
Voeg één rij toe aan Werknemers. Moet in een transactie worden gedaan om er zeker van te zijn dat u niet blijft zitten met de standaard willekeurige waarde van left(newid(), 10)
in 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. Maak EmpCode
een berekende kolom
.
Tabeldefinitie:
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
)
Voeg één rij toe aan Werknemers:
insert into Employees (DistrictCode) values ('AB')