SQL triggers är delar av SQL-kod som körs på en viss händelse eller när databasen tillståndet matchar angivna villkor . Även om syntaxen för inställning och ta bort triggers varierar något mellan olika databassystem , triggers är vanliga i praktiskt taget varje storskalig databas projektet . Databas utvecklare använder ofta SQL triggers för automatisk logg eller analytisk funktion , eftersom de kan konfigureras för att skapa eller uppdatera databasen efter frågan körs . Orsaker
SQL triggers kan raderas manuellt via en " DROP TRIGGER " uttalande eller automatiskt som en bieffekt av en annan SQL-fråga . Utvecklare inrätta en egen radera trigger eller en trigger som tar bort en annan trigger för givna förhållanden . Dessa utlösande strykningar förändrar semantiken i databasen i form av analytisk bearbetning , kräver noggrann uppmärksamhet och granskning av databasen utvecklare . Du kan också radera triggers som en bieffekt av en annan fråga , såsom webbsida processorer , förutsatt att frågan verkställare har behörighet att ändra utlösare för den databasen .
Effekter
Ta bort en trigger är en normal funktion av databasen , särskilt när det görs manuellt eller automatiskt enligt ett väl genomtänkt databas planen . När en trigger deletion är oväntad , men konsekvenserna i databasen semantik är allvarliga . Sedan utlöser logga ofta eller samla databasstatistik för analytisk användning , radering av denna logik resulterar i ofullständiga stockar eller felaktiga statistik . Beroende på hur mycket organisationen bygger på databasen , kan detta utlösa förödelse på affärsmetoder eller helt enkelt orsaka en olägenhet för systemets användare .
Detection
Tyvärr , eftersom SQL dELETE inte är inloggad som standard , är det mycket svårt att upptäcka en raderad SQL trigger . Om databasen är tillräckligt liten , kan systemadministratörer gissa oftast om en trigger har raderats . De gör detta genom att leta efter saknade biverkningar av avtryckaren , till exempel saknas loggposter . SQL " SHOW TRIGGSIGNALER " kommando tillåter utvecklare att visa alla aktiva triggers och tillhörande villkor i databasen . För mer komplexa databassystem , hålla en strikt logg över alla utlösande verksamhet , på grund av deras förmåga att förändra databasen semantik på oförutsedda sätt . Addera Prevention
Databas utveckling bäst - metoder att skydda de semantik av data från att ändras omedvetet av misstag eller fel i databasen koden . För att undvika oväntade semantiska förändringar, såsom SQL trigger radering bör utlösa uttalanden uppdateras inte , infoga eller ta bort en trigger . Hantera alla utlöser manuellt av databasutvecklare , hålla noggranna register över de tillhörande ändringarna . Alla databasutvecklare bör vara medvetna om utlösande verksamhet över hela databasen , för att eliminera förvirring om en trigger raderas .