Aqui estão duas maneiras de fazer o que você quer. O fato de que você pode acabar com uma violação de restrição exclusiva em
EmpCode
Vou deixar você se preocupar :). 1. Use
scope_identity()
para obter o último ID inserido e usá-lo para calcular EmpCode
. Definição da tabela:
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
)
Adicione uma linha a Funcionários. Deve ser feito em uma transação para ter certeza de que você não ficará com o valor aleatório padrão de
left(newid(), 10)
em 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. Faça
EmpCode
uma coluna calculada
. Definição da tabela:
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
)
Adicione uma linha a Funcionários:
insert into Employees (DistrictCode) values ('AB')