sql >> Databáze >  >> RDS >> Sqlserver

Zpracování max(ID) v souběžném prostředí

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')


  1. Python mysql (pomocí pymysql) se automaticky znovu připojí

  2. Jak povolit automatické opětovné připojení klienta MySQL k MySQLdb?

  3. Jak uložit časové pásmo v SQL Server 2005

  4. Příklady UTC_DATE – MySQL