Aquí hay dos formas de hacer lo que quieres. El hecho de que podría terminar con una violación de restricción única en EmpCode
Dejaré que te preocupes :).
scope_identity()
para obtener el último ID insertado y usarlo para calcular EmpCode
.
Definición de tabla:
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
)
Agregue una fila a Empleados. Debe hacerse en una transacción para asegurarse de que no se quedará con el valor aleatorio predeterminado de left(newid(), 10)
en 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
EmpCode
una columna calculada
.
Definición de tabla:
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
)
Agregue una fila a Empleados:
insert into Employees (DistrictCode) values ('AB')