Berikut adalah dua cara untuk melakukan apa yang Anda inginkan. Fakta bahwa Anda mungkin berakhir dengan pelanggaran batasan unik pada EmpCode
Saya akan meninggalkan Anda untuk khawatir tentang :).
1. Gunakan scope_identity()
untuk mendapatkan ID yang terakhir dimasukkan dan menggunakannya untuk menghitung EmpCode
.
Definisi tabel:
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
)
Tambahkan satu baris ke Karyawan. Harus dilakukan dalam transaksi untuk memastikan bahwa Anda tidak akan dibiarkan dengan nilai acak default dari left(newid(), 10)
di 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. Buat EmpCode
kolom yang dihitung
.
Definisi tabel:
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
)
Tambahkan satu baris ke Karyawan:
insert into Employees (DistrictCode) values ('AB')