ここにあなたが望むことをする2つの方法があります。 EmpCode
で一意制約違反が発生する可能性があるという事実 心配するのはあなたに任せます:)
1. scope_identity()
を使用します
最後に挿入された ID を取得し、それを使用して EmpCode
を計算します .
テーブル定義:
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
)
Employees に 1 行追加します。 left(newid(), 10)
からのデフォルトのランダム値が残らないように、トランザクションで実行する必要があります。 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. EmpCode
を作成 計算列
.
テーブル定義:
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
)
Employees に 1 行追加:
insert into Employees (DistrictCode) values ('AB')