sql >> Database teknologi >  >> RDS >> Sqlserver

Looper du i Trigger?

Dit første problem er, at du aldrig bør overveje at gå gennem et rekordsæt som et førstevalg. Det er næsten altid det forkerte valg, som det er her. Dit næste problem er, at triggere behandler hele sættet af poster, ikke én ad gangen, og ud fra din beskrivelse vil jeg vædde på, at du skrev det, forudsat at det ville behandle én post ad gangen. Du har brug for en sæt-baseret proces.

Sandsynligvis har du brug for noget som dette i din trigger, som ville indsætte alle lande i indsat, som ikke allerede er i landetabellen (dette forudsætter country_Id er en heltals identitetskolonne):

Insert country (country_name)
select country_name 
from inserted i
where not exists 
  (select * from country c 
   where c.country_name = i.country_name)

Du kan også bruge en lagret proc i stedet for en trigger til at indsætte i de rigtige tabeller fra iscenesættelsestabellen.



  1. fejl under import af excel-fil til databasen

  2. Hvis der findes data, ellers... bruger du Oracle SQL?

  3. Automatiseret test af opgraderingsprocessen til MySQL/MariaDB/Percona Server

  4. Hvordan undgår man fastlåste DB-forbindelser med TomEE's JDBC-forbindelsespulje?