Hier sind zwei Möglichkeiten, das zu tun, was Sie wollen. Die Tatsache, dass Sie möglicherweise mit einer Verletzung der eindeutigen Einschränkung für EmpCode
enden Ich überlasse es Ihnen, sich darum zu kümmern :).
1. Verwenden Sie scope_identity()
um die zuletzt eingefügte ID zu erhalten und diese zur Berechnung von EmpCode
zu verwenden .
Tabellendefinition:
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
)
Fügen Sie eine Zeile zu Employees hinzu. Sollte in einer Transaktion durchgeführt werden, um sicherzustellen, dass Sie nicht mit dem standardmäßigen Zufallswert von left(newid(), 10)
zurückgelassen werden 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. Machen Sie EmpCode
eine berechnete Spalte
.
Tabellendefinition:
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
)
Eine Zeile zu Employees hinzufügen:
insert into Employees (DistrictCode) values ('AB')