Sdílet prostřednictvím


SPUST SPUŠŤ (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Odstraní jeden nebo více spouštěčů DML nebo DDL z aktuální databáze.

Transact-SQL konvence syntaxe

Syntaxe

-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)  
  
DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name [ ,...n ] [ ; ]  
  
-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON { DATABASE | ALL SERVER }   
[ ; ]  
  
-- Trigger on a LOGON event (Logon Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON ALL SERVER  

Arguments

POKUD EXISTUJE
Platí na: SQL Server (SQL Server 2016 (13.x) až po současnou verzi, SQL Database).

Podmíněně spouštěč zruší jen pokud už existuje.

schema_name
Je název schématu, ke kterému DML trigger patří. DML triggery jsou omezeny na schéma tabulky nebo pohledu, na kterém jsou vytvořeny. schema_name nelze specifikovat pro DDL nebo spouštěče přihlášení.

trigger_name
Je název spouště, kterou je třeba odstranit. Pro zobrazení seznamu aktuálně vytvořených spouštěčů použijte sys.server_assembly_modules nebo sys.server_triggers.

DATABASE
Označuje, že rozsah DDL triggeru se vztahuje na aktuální databázi. DATABASE musí být specifikováno, pokud bylo také specifikováno při vytvoření nebo úpravě spouštěče.

ALL SERVER
platí pro: SQL Server 2008 (10.0.x) a novější.

Označuje, že rozsah DDL triggeru se vztahuje na aktuální server. ALL SERVER musí být specifikován, pokud byl také specifikován při vytvoření nebo úpravě spouštěče. ALL SERVER se také vztahuje na spouštěče přihlášení.

Poznámka:

Tato možnost není dostupná v uzavřené databázi.

Poznámky

DML spouštěč můžete odstranit tím, že ho vypustíte, nebo spuštěním spouštěcí tabulky. Když je tabulka vypuštěna, všechny související spouštěče jsou také odstraněny.

Když je trigger vypuštěn, informace o triggeru jsou odstraněny z katalogů sys.objects, sys.triggers a sys.sql_modules .

Více DDL spouštěčů lze vyřadit na jeden příkaz DROP TRIGGER pouze tehdy, pokud byly všechny spouštěče vytvořeny pomocí identických ON klauzl.

Pro přejmenování triggeru použijte DROP TRIGGER a CREATE TRIGGER. Pro změnu definice spouštěče použijte ALTER TRIGGER.

Pro více informací o určování závislostí pro konkrétní spouštěč viz sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) a sys.dm_sql_referencing_entities (Transact-SQL).

Pro více informací o zobrazení textu triggeru viz sp_helptext (Transact-SQL ) a sys.sql_modules (Transact-SQL).

Pro více informací o zobrazení seznamu existujících spouštěčů viz sys.triggers (Transact-SQL) a sys.server_triggers (Transact-SQL).

Povolení

Pro vypuštění DML spouštěče je potřeba ALTER povolení k tabulce nebo zobrazení, kde je spouštěč definován.

Pro odstranění DDL triggeru definovaného s rozsahem serveru (NA VŠECH SERVERECH) nebo pro přihlášení je potřeba oprávnění CONTROL SERVER na serveru. Pro odstranění DDL triggeru definovaného s databázovým rozsahem (ON DATABASE) je potřeba ZMĚNIT LIBOVOLNÉ POVOLENÍ DATABASE DDL v aktuální databázi.

Examples

A. Vypuštění DML spouštěče

Následující příklad ukládá employee_insupd spouštěč do databáze AdventureWorks2025. (Od SQL Server 2016 (13.x) můžete použít syntaxi DROP TRIGGER, POKUD EXISTUJE.)

IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL  
   DROP TRIGGER employee_insupd;  

B. Upuštění spouště DDL

Následující příklad vyrušuje DDL trigger safety.

Důležité

Protože DDL triggery nejsou schématově omezené a proto se neobjevují v katalogu sys.objects , nelze funkci OBJECT_ID použít k dotazování, zda v databázi existují. Objekty, které nejsou schema-scoped, musí být dotazovány pomocí příslušného katalogového pohledu. Pro DDL triggery použijte sys.triggers.

DROP TRIGGER safety  
ON DATABASE;  

Viz také

ALTEROVÁ SPOUŠŤ (Transact-SQL)
VYTVOŘIT SPOUŠŤ (Transact-SQL)
Povolení triggeru (Transact-SQL)
ZAKÁZAT TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
Získejte informace o triggerech DML
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)