sql >> Database >  >> RDS >> Sqlserver

Looping in Trigger?

Uw eerste probleem is dat u het doorlopen van een recordset nooit als eerste keuze moet beschouwen. Het is bijna altijd de verkeerde keuze zoals hier. Je volgende probleem is dat triggers de hele set records niet één tegelijk verwerken en uit je beschrijving wed ik dat je het schreef in de veronderstelling dat het één record tegelijk zou verwerken. Je hebt een set-based proces nodig.

Waarschijnlijk heb je iets als dit nodig in je trigger, waarbij alle landen worden ingevoegd die nog niet in de landentabel staan ​​(hierbij wordt ervan uitgegaan dat country_Id een integer-identiteitskolom is):

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

Je zou ook een opgeslagen proc kunnen gebruiken in plaats van een trigger om in de echte tabellen van de staging-tabel in te voegen.



  1. Wat is een goede benadering voor het beheren van de db-verbinding in een Google Cloud SQL (GAE) Python-app?

  2. MySQL Group_Concat() versus T-SQL String_Agg()

  3. Sql Query-hulp om niet-overeenkomende records uit twee tabellen te krijgen

  4. SQL Server-lettertype wijzigen in html-tekenreeks