Articles

SQL Server Trigger frissítés után egy adott érték

által: Dallas Snider | korszerűsített: 2015-09-10 / Hozzászólások (6) | kapcsolódó: több > triggerek

probléma

létre kell hoznom egy SQL Server trigger, amely végrehajtja, ha egy oszlop értéke frissül egy adott értéket. Hogy tehetném ezt?

megoldás

ebben a tippben megmutatjuk, hogyan írhatunk T-SQL utasításokat, amelyek létrehoznak egy SQLServer triggert,amely az oszlop értékének egy adott értékre történő frissítése után fut.

az alábbi képen látható, hogy hol készítjük el a tbltriggertest nevű példatáblánkat egy pkid nevű elsődleges kulcsoszloppal, egy OrderApprovalDateTime nevű dátumoszloppal és egy OrderStatus nevű varchar oszlopgal. A táblázatot három tesztrekorddal töltjük fel, a OrderApprovalDateTime null értékre van állítva, a OrderStatus pedig”függőben” van.

hozza létre a táblázatot és illessze be a példaadatokat

ebben a példában azt akarjuk, hogy a trigger feltöltse a OrderApprovalDateTime-ot a Getdate() függvény által megadott aktuális dátummal, miután az OrderStatus frissítve lett”jóváhagyva”. A trigger létrehozásához szükséges T-SQL az alábbiakban látható. Nagyon fontos, hogy a belső csatlakozást a beillesztett táblához illesszük, hogy csak a frissített sorok legyenek érintettek. Ha az OrderStatus= “jóváhagyott” záradékot önmagában a frissített sorok korlátozására használja, akkor az összes sornak egyidejűleg frissíti a jóváhagyott OrderStatus értéket.

a trigger sikeres létrehozása

a trigger teszteléséhez végrehajtunk egy T-SQL frissítési nyilatkozatot, hogy az OrderStatus értéket a táblázat első sorához” jóváhagyott ” értékre állítsuk (pkID = 1). A T-SQL UPDATE parancs után végrehajtunk egy T-SQL SELECT lekérdezést, hogy megbizonyosodjunk arról, hogy a trigger helyesen van-e végrehajtva. A frissítés kimenete, majd a kijelentések kiválasztása az alábbiakban látható.

sikeresen tesztelje a ravaszt

vegye figyelembe a fentieket, hogy csak az első sornak volt Megrendeléseapprovaldatetime beállítva az aktuális dátumra, ami a kívánt viselkedésünk. Azonban egy második tesztet kell futtatnunk annak biztosítása érdekében, hogy a sorok megfelelő száma frissüljön. Második tesztünkben végrehajtunk egy T-SQL frissítési nyilatkozatot, hogy a OrderStatus értéket a táblázat második sorához “jóváhagyásra” állítsuk (pkID = 2). Miután kiválasztotta az összes rekordot a táblázatban, vegye figyelembe, hogy a Megrendelésaz Approvaldatetime a második sorhoz nem egyenlő a Megrendelésselprovaldatetime az első sorban. Ismét ez a kívánt viselkedés, és minden jól jelenik meg.

tesztelje újra a ravaszt

a tipp teljes kódja az alábbi mezőben található.

use MSSQLTipsgocreate table tblTriggerTest( pkID integer Identity(1,1) primary key, OrderApprovalDateTime datetime, OrderStatus varchar(20))insert into tblTriggerTest values (NULL, 'Pending')insert into tblTriggerTest values (NULL, 'Pending')insert into tblTriggerTest values (NULL, 'Pending')select * from tblTriggerTestgocreate trigger trTriggerTest on tblTriggerTestafter updateasbegin set nocount on; update tblTriggerTest set OrderApprovalDateTime=getdate() from tblTriggerTest t inner join inserted i on t.pkID=i.pkID and i.OrderStatus='Approved'endgoupdate tblTriggerTest set OrderStatus='Approved' where pkID=1goselect * from tblTriggerTestgoupdate tblTriggerTest set OrderStatus='Approved' where pkID=2goselect * from tblTriggerTestgo
következő lépések

néhány perc alatt megtudhatja, mi történik, ha megváltoztatja a belső csatlakozást, vagy további oszlopokat ad hozzá a táblához és a triggerhez.

is, nézd meg további tippeket ontriggers az SQL Server MSSQLTips.com.

  • Kényszerítve Ravaszt Tüzelési Parancsot az SQL Server
  • Megakadályozza a véletlen update vagy delete parancsok minden sor egy SQL Server táblázat
  • Naplózás, amikor Elindítja vagy ki, vagy be az SQL Server

Utolsó frissítése: 2015-09-10

get-parancsfájlok

következő tipp gomb

a szerzőről
MSSQLTips szerző Dallas SniderDr. Dallas Snider a Nyugat-Floridai Egyetem Számítástechnikai Tanszékének adjunktusa, 18 + éves SQL tapasztalattal rendelkezik.
tekintse meg az összes tippemet
kapcsolódó források

  • további adatbázis-Fejlesztő tippek…