Zde jsou dva způsoby, jak dělat, co chcete. Skutečnost, že můžete skončit s jedinečným porušením omezení na EmpCode
Nechám vás o starosti :).
1. Použijte scope_identity()
získat poslední vložené ID a použít jej k výpočtu EmpCode
.
Definice tabulky:
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
)
Přidejte jeden řádek do položky Zaměstnanci. Mělo by být provedeno v transakci, abyste si byli jisti, že vám nezůstane výchozí náhodná hodnota z left(newid(), 10)
v 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. Vytvořte EmpCode
vypočítaný sloupec
.
Definice tabulky:
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
)
Přidejte jeden řádek do položky Zaměstnanci:
insert into Employees (DistrictCode) values ('AB')