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

Smyčka v Triggeru?

Vaším prvním problémem je, že byste nikdy neměli považovat za první volbu procházení sady záznamů. Téměř vždy je to špatná volba, jako je tomu zde. Váš další problém je, že triggery zpracovávají celou sadu záznamů ne jeden po druhém a z vašeho popisu se vsadím, že jste to napsal za předpokladu, že by zpracovával jeden záznam po druhém. Potřebujete proces založený na sadě.

Pravděpodobně budete ve svém spouštěči potřebovat něco takového, co by vložilo všechny země, které ještě nejsou v tabulce zemí (předpokládá se, že country_Id je celočíselný sloupec identity):

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

Můžete také použít uložený proces místo spouštěče pro vložení do skutečných tabulek z pracovní tabulky.



  1. MySQL:opětovné použití automatického zvýšení během vkládání

  2. mysql pro získání hloubky záznamu, počítání rodičovských a předchůdců

  3. Implementace funkce Listagg Overflow (Oracle SQL)

  4. Nahrání obrázku Laravel do databáze