alter TETIKLEYICI (Transact-sql)

Bir dml, ddl ya da daha önce TETIKLEYICI create deyimi tarafından oluşturulan oturum açma tetikleyici tanımını değiştirir. Tetikleyiciler, Tetikleyici oluşturma kullanılarak oluşturulur. Doğrudan oluşturulabilir Transact-SQLdeyimleri veya oluşturulan derlemelerin yöntemleri Microsoft  .NET Frameworkortak dil çalışma zamanı (clr) ve bir örneği için SQL Server. alter TETIKLEYICI deyimi içinde kullanılan parametreleri hakkında daha fazla bilgi için bkz: CREATE TRIGGER (Transact-SQL).

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
ALTER TRIGGER schema_name.trigger_name 
ON ( table | view ) 
[ WITH <dml_trigger_option> [ ,...n ] ]
(FOR | AFTER | INSTEAD OF ) 
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] } 
[ NOT FOR REPLICATION ] 
AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME <method specifier> [ ; ] } 

<dml_trigger_option> ::=
    [ ENCRYPTION ]
    [ <EXECUTE AS Clause> ]

<method_specifier> ::=
    assembly_name.class_name.method_name

Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE statement (DDL Trigger)

ALTER TRIGGER trigger_name 
ON { DATABASE | ALL SERVER } 
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type [ ,...n ] | event_group } 
AS { sql_statement [ ; ] | EXTERNAL NAME <method specifier> 
[ ; ] }
} 

<ddl_trigger_option> ::=
    [ ENCRYPTION ]
    [ <EXECUTE AS Clause> ]

<method_specifier> ::=
    assembly_name.class_name.method_name

Trigger on a LOGON event (Logon Trigger)
ALTER TRIGGER trigger_name 
ON ALL SERVER 
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR| AFTER } LOGON 
AS { sql_statement  [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier >  [ ; ] }

<logon_trigger_option> ::=
    [ ENCRYPTION ]
    [ EXECUTE AS Clause ]

<method_specifier> ::=
    assembly_name.class_name.method_name

Bağımsız değişkenler

  • schema_name
    DML tetikleyicisinin ait olduğu şemanın adıdır. DML tetikleyicileri, üzerinde oluşturuldukları tablo veya görünümün şemasının kapsamıyla sınırlıdır. schema_namedml tetikleyici ve ilgili tablo veya görünüm için varsayılan şema aitse isteğe bağlıdır. schema_nameddl ya da logon tetikleyici belirtilemez.

  • trigger_name
    Değiştirmek için varolan tetikleyici olduğunu.

  • table | view
    Tablo veya Görünüm dml tetikleyici yürütüldüğü olduğunu. Tablo veya görünüm tam adını belirten isteğe bağlı.

  • DATABASE
    Bir DDL tetikleyicisinin kapsamını geçerli veritabanına uygular. Belirtilirse, geçerli veritabanında event_type veya event_group oluştuğunda tetikleyici çalışır.

  • ALL SERVER
    Bir DDL'nin kapsamını veya oturum açma tetikleyicisini geçerli sunucuya uygular. Belirtilmişse, tetiği ne zaman harekete event_typeya event_groupher yerde geçerli sunucu oluşur.

  • WITH ENCRYPTION
    Şifreler sys.syscomments sys.sql_modulesalter TETIKLEYICI deyimi metin içeren girdi. WITH ENCRYPTION kullanarak engeller tetikleyicinin parçası olarak yayınlanan SQL Serverçoğaltma. WITH ENCRYPTION, CLR tetikleyicileri için belirtilemez.

    [!NOT]

    WITH ENCRYPTION kullanarak bir tetikleyici oluşturduysanız alter TETIKLEYICI deyimindeki etkin kalması bu seçeneği yeniden belirtilmesi gerekir.

  • EXECUTE AS
    Tetikleyicinin kapsamında yürütüldüğü güvenlik bağlamını belirtir. Örneği kullanıcı hesabı denetlemenizi sağlayan SQL ServerTetikleyici tarafından başvurulan veritabanı nesnelerinin izinlerini doğrulamak için kullanır.

    Daha fazla bilgi için, bkz. execute as yan tümcesi (Transact-sql).

  • SONRA
    Yalnızca tetikleyici sql deyimi başarıyla yürütüldü sonra tetikleyici harekete belirtir. Bu tetikleyici harekete önce tüm bilgi tutarlılığına basamaklı eylemler ve sınırlama denetimleri de başarılı olmalı.

    for anahtar belirtilen yalnızca sonra varsayılandır.

    Yalnızca tablolarda Tetikleyiciler dml sonra tanımlanabilir.

  • INSTEAD OF
    dml tetikleyici tetikleme sql deyimi yerine, bu nedenle, tetikleme deyimleri eylemleri geçersiz kılma yürütülen olduğunu belirtir. INSTEAD OF, DDL veya oturum açma tetikleyicileri için belirtilemez.

    Bir tablo veya görünümde INSERT, UPDATE veya DELETE deyimi başına en çok bir INSTEAD OF tetikleyicisi tanımlanabilir. Ancak, her görünümün kendi INSTEAD OF tetikleyicisine sahip olduğu görünümler üzerinde görünümler tanımlayabilirsiniz.

    WITH check OPTION oluşturulmuş görünümlerde INSTEAD of Tetikleyiciler izin verilmez. SQL ServerINSTEAD of tetikleyici için WITH check OPTION belirtilen bir görünümüne eklendiğinde hata yükseltir. Kullanıcı bu seçeneği alter VIEW INSTEAD of tetikleyici tanımlamadan önce kullanarak kaldırmanız gerekir.

  • { [ DELETE ] , ] [ INSERT ] , ] [ UPDATE ] } | {[Ekle] , [güncelleştirme]}
    Bu tablo karşı güvenilir veri değişikliği deyimleri belirtir veya görüntüleme, dml tetikleyici etkinleştirme. En az bir seçenek belirtilmesi gerekir. Tetikleyici tanımını herhangi bir sırada bunların herhangi bir birleşimine izin verilir. Birden fazla seçenek belirtilmediği takdirde seçenekler virgülle ayırın.

    INSTEAD OF tetikleyicilerinde, DELETE seçeneği, ON DELETE'te bir basamaklı eylem belirten bir başvuru ilişkisi olan tablolarda kullanılamaz. Benzer şekilde, UPDATE seçeneği, ON UPDATE'te bir basamaklı eylem belirten bir başvuru ilişkisi olan tablolarda kullanılamaz. Daha fazla bilgi için, bkz. ALTER TABLE (Transact-SQL).

  • event_type
    Adı bir Transact-SQL, yürütme sonrasında, ddl tetikleyici ateşlenmesine neden dil olay. DDL tetikleyicileri için geçerli olaylar ddl olayları içinde listelenmiştir.

  • event_group
    Transact-SQL dili olaylarının önceden tanımlı bir gruplamasının adıdır. ddl tetikleyici harekete herhangi yürütme sonrasında Transact-SQLait olan dil olay event_group. ddl Tetikleyiciler için geçerli olay grupları listelenmiştir ddl olay grupları. alter TETIKLEYICI çalışması bittikten sonra event_groupda bir makro olarak olay türleri ekleyerek o için kapaklar davranır sys.trigger_eventsKatalog görünümü.

  • NOT FOR REPLICATION
    Çoğaltma aracısı tetikleyici alan tabloyu değiştirir zaman tetikleyici yürütülmemesi gösterir.

  • sql_statement
    Tetikleyici koşulları ve eylemleridir.

  • <method_specifier>
    Tetikleyici ile bağlamak için bir derleme yöntemi belirtir. Yöntemin hiçbir bağımsız değişken almaması ve void döndürmesi gerekir. class_namegeçerli olmalıdır SQL Servertanımlayıcısı ve derleme bir sınıf olarak derleme görünürlüğü ile bulunmalıdır. Sınıf iç içe geçmiş bir sınıf olamaz.

Açıklamalar

Açıklamalar, alter TETIKLEYICI hakkında daha fazla bilgi için bkz: CREATE TRIGGER (Transact-SQL).

[!NOT]

external_name ve on_all_server seçenekleri bulunan bir veritabanında kullanılamaz.

dml Tetikleyicileri

alter TETIKLEYICI, tablolar ve görünümler üzerinde INSTEAD OF Tetikleyiciler yoluyla el ile güncellenebilir görünümleri destekler. SQL Serveralter TETIKLEYICI Tetikleyiciler her türlü aynı şekilde uygulanır (sonra yerine-in).

İlk ve sonra tablo üzerinde yürütülecek Tetikleyiciler kullanarak belirtilebilir son sp_settriggerorder. Tek bir son ilk ve tek sonra tetikleyici bir tabloda belirtilebilir. Aynı tabloda başka AFTER tetikleyicileri varsa, bunlar rastgele çalıştırılır.

Bir ALTER TRIGGER deyimi bir ilk veya son tetikleyiciyi değiştirirse, değiştirilen tetikleyicide ayarlanan ilk veya son öznitelik bırakılır ve sıra değerinin sp_settriggerorder kullanılarak sıfırlanması gerekir.

Bir AFTER tetikleyicisi yalnızca tetikleyen SQL deyimi başarıyla yürütüldükten sonra çalıştırılır. Bu başarılı çalıştırma, güncelleştirilen veya silinen nesne ile ilişkili tüm basamaklı başvuru eylemlerini ve kısıtlama denetimlerini içerir. SONRA tetiği işlemi, tetikleme beyannamenin neden olduğu update ve delete eylemleri için tetikleyici deyimi ve ayrıca tüm bilgi tutarlılığına basamakla etkileri için denetler.

SİLME eylemi bir çocuk ya da başvuru tablosu bir üst tablo delete cascade sonucudur ve o çocuk masaya tanımlı INSTEAD of tetikleyici on delete tetikleyici yoksayılır ve silme eylemi yürütülür.

ddl Tetikleyicileri

DML tetikleyicilerinden farklı olarak DDL tetikleyicilerinin kapsamı şemalarla sınırlı değildir. ddl hakkında meta verileri sorgulama geçirdiğinde, bu nedenle OBJECT_ID, object_name, objectproperty ve objectproperty(ex) kullanılamaz. Bunun yerine katalog görünümlerini kullanın. Daha fazla bilgi için, bkz. dml Tetikleyiciler hakkında bilgi almak.

İzinler

Bir dml değiştirmek için tablo veya Görünüm tetikleyici tanımlanmış alter izni tetikleyici gerektirir.

Bir ddl değiştirmek için sunucu kapsamı (on all server) ile tanımlanmış tetikleyici ya da logon tetikleyici sunucu üzerinde control server izni gerektirir. Bir ddl değiştirmek için alter any database ddl tetikleyici izni geçerli veritabanında veritabanı kapsam (on database) ile tanımlanmış tetikleyici gerektirir.

Örnekler

Aşağıdaki örnek, kullanıcı tanımlı bir ileti istemcisi, kullanıcı eklemek veya verileri değiştirmek istediğinde yazdıran dml tetikleyici oluşturur SalesPersonQuotaHistorytablosu. Tetikleyici sonra kullanılarak değiştirilebilir ALTER TRIGGERsadece tetiği uygulamak için INSERTetkinlikleri. İçin güncelleştirmek ya da da bildirmek için bu tabloya satırlar ekler kullanıcıya hatırlatır, Bu tetikleyici yararlı olur Compensationbölüm.

USE AdventureWorks2012;
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
-- Now, change the trigger.
USE AdventureWorks2012;
GO
ALTER TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
AFTER INSERT
AS RAISERROR ('Notify Compensation', 16, 10);
GO

Ayrıca bkz.

Başvuru

drop TETIKLEYICI (Transact-sql)

TETIKLEYICI (Transact-sql) etkinleştir

DISABLE TETIKLEYICI (Transact-sql)

eventdata (Transact-sql)

sp_helptrigger (Transact-sql)

sp_addmessage (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)

Kavramlar

Saklı yordam oluşturma

İşlemler

dml Tetikleyiciler hakkında bilgi almak

dml Tetikleyiciler hakkında bilgi almak

Yayını veritabanları üzerinde şeması değişiklikler yapmak