Aracılığıyla paylaş


DML Tetikleyicilerini Silme veya Devre Dışı Bırakma

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bu konu, SQL Server Management Studio veya Transact-SQL kullanılarak SQL Server'da bir DML tetikleyicisinin nasıl silineceğini veya devre dışı bırakılacağını açıklar.

Bu Konuda

  • Başlamadan önce:

    Öneri

    Security

  • DML tetikleyicisini silmek veya devre dışı bırakmak için:

    SQL Server Management Studio

    Transact-SQL

Başlamadan Önce

Recommendations

  • Bir tetikleyici silindiğinde, mevcut veritabanından çıkarılır. Tablo ve dayandığı veriler etkilenmez. Bir tabloyu silmek, masadaki tetikleyicileri otomatik olarak siler.

  • Tetikleyici oluşturulduğunda varsayılan olarak etkinleştirilir.

  • Bir tetikleyiciyi devre dışı bırakmak onu düşürmez. Tetikleyici hâlâ mevcut veritabanında bir nesne olarak varlığını sürdürmektedir. Ancak, tetikleyici, programlandığı herhangi bir INSERT, UPDATE veya DELETE ifadesi çalıştırıldığında ateşlenmez. Devre dışı bırakılan tetikleyiciler yeniden etkinleştirilebilir. Bir tetikleyiciyi etkinleştirmek onu yeniden yaratmaz. Tetik, ilk oluşturulduğu zamanki gibi ateş eder.

Security

Permissions

Bir DML tetikleyicisini silmek için tetikleyicinin tanımlandığı tablo veya görünüm üzerinde ALTER izni gereklidir.

DML tetikleyicisini devre dışı bırakmak veya etkinleştirmek için en azından bir kullanıcının tetikleyicinin oluşturulduğu tablo veya görünüm üzerinde ALTER iznine sahip olması gerekir.

SQL Server Management Studio'yu kullanma

DML tetikleyicisini silmek için

  1. Object Explorer'da bir Veritabanı Motoru örneğine bağlanın ve ardından o örneği genişletin.

  2. İstediğiniz veritabanını genişletin, Tablolar'ı genişletin ve ardından silmek istediğiniz tetikleyiciyi içeren tabloyu genişletin.

  3. Tetikleyiciler'i genişletin, tetikleyiciye sağ tıklayarak silin ve ardından Sil'e tıklayın.

  4. Nesneyi Sil diyalog kutusunda, silme tetikleyicisini doğrulayın ve ardından Tamam'a tıklayın.

DML tetikleyicisini devre dışı bırakmak ve etkinleştirmek için

  1. Object Explorer'da bir Veritabanı Motoru örneğine bağlanın ve ardından o örneği genişletin.

  2. İstediğiniz veritabanını genişletin, Tablolar'ı genişletin ve ardından devre dışı bırakmak istediğiniz tetikleyiciyi içeren tabloyu genişletin.

  3. Tetikleyiciler'i genişletin, tetikleyiciye sağ tıklayarak devre dışı bırakın, ardından devre dışı bırakın.

  4. Tetikleyiciyi etkinleştirmek için Etkinleştir tuşuna tıklayın.

Transact-SQL Kullanımı

DML tetikleyicisini silmek için

  1. Veritabanı Altyapısı'na bağlanın.

  2. Standart çubuğundan Yeni Sorguöğesine tıklayın.

  3. Aşağıdaki örnekleri sorgu penceresine kopyalayıp yapıştırın. Tetikleyiciyi oluşturmak için Sales.bonus_reminder ifadesini çalıştırın. Tetikleyiciyi silmek için DROP TRIGGER ifadesini çalıştırın.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Delete the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL  
   DROP TRIGGER Sales.bonus_reminder;  
GO  
  

DML tetikleyicisini devre dışı bırakmak ve etkinleştirmek için

  1. Veritabanı Altyapısı'na bağlanın.

  2. Standart çubuğundan Yeni Sorguöğesine tıklayın.

  3. Aşağıdaki örnekleri sorgu penceresine kopyalayıp yapıştırın. Tetikleyiciyi oluşturmak için Sales.bonus_reminder ifadesini çalıştırın. Tetikleyiciyi devre dışı bırakmak ve etkinleştirmek için, sırasıyla DISABLE TRIGGER ve ENABLE TRIGGER ifadelerini çalıştırın.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Disable the trigger.  
USE AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
GO  
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  

Ayrıca Bkz.

ALTER TRIGGER (Transact-SQL)
TETİKLEYİCİ OLUŞTUR (Transact-SQL)
ATKI TETIK (Transact-SQL)
TETİKLEYİCİYİ ETKİNLEŞTİR (Transact-SQL)
TETİKLEMİYİ DEVRE DIŞI BIRAK (Transact-SQL)
OLAY VERILERI (Transact-SQL)
DML Tetikleyicileri Hakkında Bilgi Alma
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modüller (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)