Je réalise une insertion en bloc sur une table dans sql server 2012, en même temps, je sélectionne la dernière ligne insérée avec la fonction max() et l'insère dans une autre table , comment effectuer ceci quand ma table reçoit des données de plusieurs sources parce que pendant l'insertion dans la table secondaire il y a un délai pendant que des insertions se produisent encore dans la table primaire la prochaine fois que max() ramassera la dernière rangée mise à jour les lignes qui ne sont pas max() mais qui sont quand même insérées dans la table primaire.Gestion de l'insertion en bloc sur une table avec plusieurs sources d'entrée dans SQL
create table dbo.emp
(
id int primary key identity(1,1),
emp_id int,
name varchar(255),
address varchar(255)
)
create table dbo.empx
(
id int primary key,
emp_id int foreign key references dbo.emp(id),
)
declare @temp int ;
set @temp=1;
while @temp<1000
begin
insert into dbo.emp(emp_id,name,address)values ([email protected],'Ename'+LTRIM(STR(@temp)),'123 Sample Address'+LTRIM(STR(@temp)));
set @[email protected]+1;
insert into dbo.empx select max(dbo.emp.id),max(dbo.emp.emp_id) from dbo.emp
end
sortie clause doesnt permettent des références clés étrangères, dans mes tables de cas sont create table dbo.emp ( id int identité de clé primaire (1,1), emp_id int, nom varchar (255), adresse varchar (255) ) create table dbo.empx ( id int clé primaire, emp_id int références clés étrangères dbo.emp (id), ) –
Ensuite, essayez avec un déclencheur .. vérifier le code mis à jour .. –
Ma première pensée était d'utiliser un trigger mais le trigger sera invoqué sur chaque insert (considérez les insertions 4lac) n'est ce pas qu'une requête insert sera beaucoup plus légère qu'appeler un trigger. –