Trigger sql là gì

Trigger trong SQL Server là các stored procedure quan trọng được xúc tiến tự động để ý kiến cùng với những đối tượng người sử dụng đại lý dữ liệu, cơ sở dữ liệu và những sự khiếu nại sever. SQL Server cung ứng tía nhiều loại trigger:

Trigger tài liệu ngôn từ tư tưởng (Trigger DDL) kích hoạt Khi xảy ra những câu lệnh CREATE, ALTER cùng DROP.Trigger đăng nhập (Trigger Logon) kích hoạt lúc xảy ra những sự kiện LOGON.

Bạn đang xem: Trigger sql là gì

Tạo trigger vào SQL Server

Trong phần này, các bạn sẽ khám phá cách sử dụng câu lệnh CREATE TRIGGER vào SQL Server nhằm chế tạo một trigger mới.

Giới thiệu về câu lệnh CREATE TRIGGER vào SQL Server

Câu lệnh CREATE TRIGGER có thể chấp nhận được các bạn tạo nên một trigger mới sẽ được kích hoạt auto bất kể khi nào một sự khiếu nại nlỗi INSERT, DELETE hoặc UPDATE xảy ra so với một bảng.

Sau đây minh họa cú pháp của câu lệnh CREATE TRIGGER:

CREATE TRIGGER trigger_nameON table_nameAFTER ,,ASsql_statementsTrong cú pháp này:

schema_name là tên của lược trang bị mà lại trigger ở trong. Tên lược đồ vật là tùy lựa chọn.trigger_name là tên gọi do người dùng chỉ định cho trigger.table_name là bảng vẫn áp dụng trigger.Sự kiện kích hoạt trigger được liệt kê trong câu lệnh AFTER. Sự kiện này hoàn toàn có thể là INSERT, UPDATE hoặc DELETE. Một trigger hoàn toàn có thể kích hoạt với 1 hoặc những sự khiếu nại xảy ra ở bảng.Tùy lựa chọn NOT FOR REPLICATION thông tư Squốc lộ Server ko được kích hoạt trigger Khi sửa đổi dữ liệu được thực hiện nlỗi một trong những phần của quy trình xào luộc.sql_statements là 1 hoặc những câu lệnh Transact-SQL được áp dụng nhằm tiến hành các hành vi sau khi một sự khiếu nại xảy ra.

Các bảng ảo đến trigger: INSERTED với DELETED

Squốc lộ Server cung ứng nhị bảng ảo đặc trưng mang đến trigger là bảng INSERTED và DELETED. SQL Server sử dụng các bảng này để thu thập tài liệu của phiên bản ghi đang sửa thay đổi trước và sau khoản thời gian sự khiếu nại xảy ra.

Bảng dưới đây cho thấy ngôn từ của bảng INSERTED và DELETED trước cùng sau mỗi sự kiện:


Sự khiếu nại Bảng INSERTED cất Bảng DELETED đựng
INSERT Các bản ghi đã có insert Trống
UPDATE Các bạn dạng ghi sau khi được update Các phiên bản ghi trước khi được update
DELETE Trống Các bạn dạng ghi đã làm được delete

Hãy coi một vài ví dụ sinh sản trigger trong Squốc lộ Server. Chúng tôi vẫn sử dụng bảng production.products vào cửa hàng dữ liệu mẫu mã BikeStores để minch họa.

*

ví dụ như chế tạo ra bảng nhằm ghi nhật ký cố kỉnh đổi

Câu lệnh tiếp sau đây sinh sản một bảng mang tên production.product_audits để ghi lên tiếng khi 1 sự kiện INSERT hoặc DELETE xẩy ra đối với bảng production.products:

CREATE TABLE production.product_audits( change_id INT IDENTITY PRIMARY KEY, product_id INT NOT NULL, product_name VARCHAR(255) NOT NULL, brand_id INT NOT NULL, category_id INT NOT NULL, model_year SMALLINT NOT NULL, list_price DEC(10,2) NOT NULL, updated_at DATETIME NOT NULL, operation CHAR(3) NOT NULL, CHECK(operation = "INS" or operation="DEL"));Bảng production.product_audits bao gồm toàn bộ những cột tự bảng production.products. Trong khi, nó được bổ sung cập nhật thêm 1 vài ba cột để đánh dấu đa số đổi khác ví dụ updated_at, operation và change_id.

Ví dụ tạo ra trigger DML vào Squốc lộ Server

Trước tiên, để chế tạo ra một trigger new, các bạn chỉ định và hướng dẫn thương hiệu của trigger cùng lược thứ mà lại trigger ở trong sau này mệnh đề CREATE TRIGGER nhỏng sau:

CREATE TRIGGER production.trg_product_auditTiếp theo, chúng ta chỉ định và hướng dẫn tên của bảng trong mệnh đề ON, trigger đã kích hoạt khi xẩy ra sự kiện trong bảng này:

ON production.productsSau đó, bạn liệt kê một hoặc những sự kiện vẫn kích hoạt trigger trong mệnh đề AFTER:

AFTER INSERT, DELETEPhần thân của trigger bắt đầu bằng tự khóa AS:

ASBEGINSau đó, phía bên trong thân của trigger, các bạn thiết lập cấu hình SET NOCOUNT ON nhằm ngăn chặn thông tin số lượng bản ghi bị ảnh hưởng bất cứ bao giờ trigger được kích hoạt.

SET NOCOUNT ON;Trigger vẫn INSERT một bạn dạng ghi vào bảng production.product_audits bất kể lúc nào một bản ghi được chèn vào hoặc xóa sổ bảng production.products. Dữ liệu để ckém vào bảng production.product_audits được cung ứng từ bỏ bảng INSERTED và DELETED trải qua toán thù tử UNION ALL nlỗi sau:

INSERT INTO production.product_audits( product_id, product_name, brand_id, category_id, model_year, list_price, updated_at, operation)SELECT i.product_id, product_name, brand_id, category_id, model_year, i.list_price, GETDATE(), "INS"FROM inserted AS iUNION ALLSELECT d.product_id, product_name, brand_id, category_id, model_year, d.list_price, getdate(), "DEL"FROM deleted AS d;Sau phía trên câu lệnh tạo nên trigger hoàn chỉnh:

CREATE TRIGGER production.trg_product_auditON production.productsAFTER INSERT, DELETEASBEGIN SET NOCOUNT ON; INSERT INTO production.product_audits( product_id, product_name, brand_id, category_id, model_year, list_price, updated_at, operation ) SELECT i.product_id, product_name, brand_id, category_id, model_year, i.list_price, GETDATE(), "INS" FROM inserted i UNION ALL SELECT d.product_id, product_name, brand_id, category_id, model_year, d.list_price, GETDATE(), "DEL" FROM deleted d;ENDCuối thuộc, các bạn thực thi câu lệnh trên nhằm chế tạo ra trigger. Lúc trigger được chế tạo, bạn có thể tìm thấy nó trong thỏng mục Triggers của bảng như vào hình sau:

*

Kiểm tra buổi giao lưu của trigger trong Squốc lộ Server

Câu lệnh sau đây chèn một bạn dạng ghi new vào bảng production.products:

INSERT INTO production.products( product_name, brand_id, category_id, model_year, list_price)VALUES ( "Test product", 1, 1, 2018, 599);Vì sự khiếu nại INSERT này, trigger production.trg_product_audit đã có được kích hoạt trong bảng production.products và cyếu một bạn dạng ghi vào bảng production.product_audits.

Hãy coi nội dung của bảng production.product_audits:

SELECT * FROM production.product_audits;Đây là đầu ra:

*

Câu lệnh sau xóa một phiên bản ghi khỏi bảng production.products:

DELETE FROM production.productsWHERE product_id = 322;Đúng như dự đoán, trigger đã làm được kích hoạt với cnhát bản ghi sẽ xóa vào bảng production.product_audits:

SELECT * FROM production.product_audits;Bức Ảnh sau đây cho thấy thêm đầu ra:

*

Trong giải đáp này, chúng ta sẽ học tập biện pháp sinh sản một kích hoạt trong Squốc lộ Server nhằm đáp ứng nhu cầu với cùng một hoặc các sự khiếu nại như cyếu và xóa.

Trigger INSTEAD OF vào Squốc lộ Server

Trong phần này, các bạn sẽ khám phá cách sử dụng trigger INSTEAD OF vào Squốc lộ Server nhằm chèn tài liệu vào bảng trải qua view.

Trigger INSTEAD OF là gì?

Trigger INSTEAD OF là 1 trigger có thể chấp nhận được chúng ta vứt qua một câu lệnh INSERT, DELETE hoặc UPDATE một bảng hoặc một view cùng tiến hành câu lệnh không giống được định nghĩa trong trigger. Các thao tác cnhát, xóa hoặc cập nhật thực tế hoàn toàn ko xảy ra.

Nói bí quyết không giống, trigger INSTEAD OF vứt qua 1 câu lệnh DML với xúc tiến những câu lệnh khác được khái niệm trong trigger.

Cú pháp trigger INSTEAD OF trong SQL Server

Dưới trên đây minc họa cú pháp về kiểu cách chế tác trigger INSTEAD OF:

CREATE TRIGGER trigger_nameON table_name INSTEAD OF <,> <,> ASsql_statementsTrong cú pháp này:

Trước tiên, hướng dẫn và chỉ định thương hiệu của trigger cùng lược vật dụng (tùy chọn) nhưng trigger trực thuộc trong tương lai mệnh đề CREATE TRIGGER.Thđọng nhì, chỉ định thương hiệu của bảng hoặc view links cùng với trigger.Thứ tía, xác minh một sự khiếu nại để kích hoạt trigger INSTEAD OF nlỗi INSERT, DELETE hoặc UPDATE. Trigger rất có thể được kích hoạt với 1 hoặc các sự khiếu nại.Thứ đọng tư, tư tưởng phần thân của trigger sau từ bỏ khóa AS. Phần thân của trigger có thể bao gồm 1 hoặc các câu lệnh Transact-Squốc lộ.

lấy ví dụ về trigger INSTEAD OF vào Squốc lộ Server

Một ví dụ nổi bật của câu hỏi áp dụng trigger INSTEAD OF là ghi đè thao tác làm việc chèn, cập nhật hoặc xóa trên view.

Giả sử, một áp dụng đề xuất cyếu những thương hiệu mới vào bảng production.brands. Tuy nhiên, các chữ tín bắt đầu đề xuất được lưu trữ vào một bảng không giống được Điện thoại tư vấn là production.brand_approvals để phê phê duyệt trước lúc cnhát vào bảng production.brands.

Để thực hiện điều đó, bạn chế tạo ra một view mang tên là production.vw_brands mang đến vận dụng nhằm cyếu các uy tín new. Nếu những thương hiệu được cyếu vào view, một trigger INSTEAD OF sẽ tiến hành kích hoạt nhằm cnhát những thương hiệu vào bảng production.brand_approvals.

Hình ảnh dưới đây minch họa vượt trình:

*

Sơ đồ dùng này sẽ không hiển thị thương hiệu lược đồ dùng của tất cả các đối tượng người dùng các đại lý tài liệu vì chưng mục đích đơn giản và dễ dàng.

Câu lệnh tiếp sau đây sinh sản một bảng mới mang tên production.brand_approvals để lưu trữ các thương hiệu vẫn đợi được phê duyệt:

CREATE TABLE production.brand_approvals( brand_id INT IDENTITY PRIMARY KEY, brand_name VARCHAR(255) NOT NULL);Câu lệnh sau đây tạo ra một view mới thương hiệu là production.vw_brands nhờ vào bảng production.brands và production.brand_approvals:

CREATE VIEW production.vw_brands ASSELECT brand_name, "Approved" approval_statusFROM production.brandsUNIONSELECT brand_name, "Pending Approval" approval_statusFROM production.brand_approvals;khi một phiên bản ghi được cyếu vào view production.vw_brands, chúng ta buộc phải đưa nó cho tới bảng production.brand_approvals thông qua trigger INSTEAD OF nhỏng sau:

CREATE TRIGGER production.trg_vw_brands ON production.vw_brandsINSTEAD OF INSERTASBEGIN SET NOCOUNT ON; INSERT INTO production.brand_approvals ( brand_name ) SELECT i.brand_name FROM inserted i WHERE i.brand_name NOT IN ( SELECT brand_name FROM production.brands );ENDTrigger ckém thương hiệu bắt đầu vào bảng production.brand_approvals nếu thương hiệu ko trường thọ trong bảng production.brands.

Bây giờ chúng ta hãy cyếu một uy tín mới vào view production.vw_brands giúp thấy chuyện gì xẩy ra nhé:

INSERT INTO production.vw_brands(brand_name)VALUES("Eddy Merckx");Câu lệnh INSERT này đã kích hoạt trigger INSTEAD OF nhằm ckém một bạn dạng ghi new vào bảng production.brand_approvals.

Nếu các bạn truy vấn tài liệu tự view production.vw_brands, bạn sẽ thấy một bản ghi mới xuất hiện:

SELECT brand_name, approval_statusFROM production.vw_brands;

*
Câu lệnh tiếp sau đây cho biết nội dung của bảng production.brand_approvals:

SELECT *FROM production.brand_approvals;

*
Trong phần này, chúng ta đã mày mò về trigger INSTEAD OF vào SQL Server và phương pháp chế tạo trigger INSTEAD OF nhằm cyếu dữ liệu vào bảng trải qua view.

Trigger DDL trong SQL Server

Trong phần này, các bạn sẽ mày mò biện pháp áp dụng trigger ngữ điệu định nghĩa dữ liệu (Data Definition Language - DDL) của SQL Server nhằm quan sát và theo dõi các biến đổi được tiến hành so với những đối tượng người dùng các đại lý tài liệu.

Giới thiệu về trigger DDL vào SQL Server

Trigger DDL của SQL Server phản hồi những sự kiện máy chủ hoặc các đại lý dữ liệu hơn là các sửa đổi tài liệu bảng. Những sự kiện này được tạo nên do các câu lệnh Transact-Squốc lộ thường xuyên ban đầu với cùng một trong số những tự khóa sau CREATE, ALTER, DROP, GRANT, DENY, REVOKE hoặc UPDATE STATISTICS.

Ví dụ: bạn có thể viết một trigger DDL để ghi nhật cam kết bất kể bao giờ người dùng xúc tiến câu lệnh CREATE TABLE hoặc ALTER TABLE.

Trigger DDL có lợi trong các trường phù hợp sau:

Ghi lại những chuyển đổi trong lược vật đại lý dữ liệu.Ngnạp năng lượng ngăn một số trong những thay đổi rõ ràng đối với lược đồ đại lý dữ liệu.Phản ứng với cùng 1 thay đổi vào lược đồ cửa hàng tài liệu.

Phần sau trình diễn cú pháp chế tác trigger DDL:

CREATE TRIGGER trigger_nameON ALL SERVERFOR event_group AS sql_statement

trigger_name

Chỉ định thương hiệu trình kích hoạt bởi vì người tiêu dùng tư tưởng sau từ bỏ khóa CREATE TRIGGER. Lưu ý rằng các bạn chưa phải chỉ định và hướng dẫn lược đồ (schema) cho một trigger DDL do nó ko liên quan mang lại table hoặc view các đại lý tài liệu thực tế.

DATABASE | ALL SERVER

Sử dụng DATABASE trường hợp trình kích hoạt đánh giá những sự kiện vào phạm vi cửa hàng dữ liệu hoặc ALL SERVER giả dụ trình kích hoạt đánh giá các sự kiện trong phạm vi sever.

ddl_trigger_option

Các tùy lựa chọn ddl_trigger_option chứng thật mệnh đề ENCRYPTION với / hoặc EXECUTE AS. ENCRYPTION mã hóa quan niệm của trigger. EXECUTE AS khẳng định toàn cảnh bảo mật thông tin mà lại Từ đó trigger được tiến hành.

Xem thêm: Chanh Leo Tiếng Anh Là Gì ? Tên Tiếng Anh Của 25 Loại Hoa Quả Quen Thuộc

event_type | event_group

Các event_type chỉ ra rằng một sự kiện DDL kích hoạt trigger nhỏng CREATE_TABLE, ALTER_TABLE, vv.

event_group là 1 đội các sự khiếu nại event_type chẳng hạn như DDL_TABLE_EVENTS.

Trigger có thể đăng ký một hoặc những sự kiện hoặc đội sự khiếu nại.

ví dụ như về chế tạo trigger DDL trong Squốc lộ Server

Giả sử bạn có nhu cầu thâu tóm tất cả các sửa đổi được thực hiện so với chỉ mục cơ sở tài liệu nhằm chúng ta cũng có thể theo dõi và quan sát giỏi hơn hiệu suất của máy công ty cửa hàng tài liệu tương quan tới các biến đổi chỉ mục này.

Thứ nhất, tạo ra một bảng mới mang tên index_logs nhằm ghi các biến hóa chỉ mục:

CREATE TABLE index_logs ( log_id INT IDENTITY PRIMARY KEY, event_data XML NOT NULL, changed_by SYSNAME NOT NULL);GOTiếp theo, chế tạo ra một trigger DDL để theo dõi và quan sát các biến hóa chỉ mục cùng chèn dữ liệu sự khiếu nại vào bảng index_logs:

CREATE TRIGGER trg_index_changesON DATABASEFOR CREATE_INDEX, ALTER_INDEX, DROP_INDEXASBEGIN SET NOCOUNT ON; INSERT INTO index_logs ( event_data, changed_by ) VALUES ( EVENTDATA(), USER );END;GOTrong phần thân của trigger, công ty chúng tôi sẽ áp dụng hàm EVENTDATA() trả về đọc tin về các sự kiện máy chủ hoặc đại lý dữ liệu. Hàm này chỉ khả dụng bên phía trong DDL hoặc trình kích hoạt singin.

Sau đó, sinh sản chỉ mục mang lại cột first_name và last_name của bảng sales.customers:

CREATE NONCLUSTERED INDEX nidx_fnameON sales.customers(first_name);GOCREATE NONCLUSTERED INDEX nidx_lnameON sales.customers(last_name);GOSau kia, truy vấn dữ liệu trường đoản cú bảng index_changes để kiểm soát coi sự khiếu nại tạo chỉ mục đã đạt được trình kích hoạt ghi lại đúng chuẩn tuyệt không:

SELECT *FROM index_logs;Đây là đầu ra:

*

Nếu các bạn nhấp vào ô của cột event_data, bạn có thể xem tài liệu XML của việc kiện nhỏng sau:

*

Trong phần này, bạn sẽ tìm hiểu bí quyết tạo nên trigger DDL vào SQL Server ý kiến một hoặc các sự kiện DDL.

Tắt trigger vào SQL Server

Trong phần này, bạn sẽ khám phá giải pháp áp dụng câu lệnh DISABLE TRIGGER trong Squốc lộ Server nhằm tắt trigger.

Giới thiệu lệnh DISABLE TRIGGER trong Squốc lộ Server

thường thì, vì chưng mục đích hạn chế sự nắm hoặc khôi phục dữ liệu, chúng ta có thể ao ước tắt trong thời điểm tạm thời trigger. Để làm cho điều này, chúng ta sử dụng câu lệnh DISABLE TRIGGER:

DISABLE TRIGGER ON Trong cú pháp này:

trước hết, hãy chỉ định và hướng dẫn thương hiệu của lược vật đựng trigger và thương hiệu của trigger nhưng mà bạn có nhu cầu tắt sau lệnh DISABLE TRIGGER.Thđọng hai, chỉ định thương hiệu bảng hoặc view mà trigger được links nếu trigger là trigger DML. Sử dụng DATABASE nếu như trigger bao gồm phạm vi các đại lý tài liệu DDL hoặc SERVER trường hợp trigger gồm phạm vi máy chủ DDL.

lấy ví dụ như về lệnh DISABLE TRIGGER trong Squốc lộ Server

Câu lệnh sau chế tác một bảng bắt đầu có tên sales.members nhằm minc họa:

CREATE TABLE sales.members ( member_id INT IDENTITY PRIMARY KEY, customer_id INT NOT NULL, member_màn chơi CHAR(10) NOT NULL);Câu lệnh sau tạo thành một trigger được kích hoạt bất kể khi nào một sản phẩm new được cnhát vào bảng sales.members. Với mục tiêu minh họa, trigger chỉ trả về một thông tin dễ dàng và đơn giản.

CREATE TRIGGER sales.trg_members_insertON sales.membersAFTER INSERTASBEGIN PRINT "A new thành viên has been inserted";END;Câu lệnh sau vẫn chèn một hàng mới vào bảng sales.members:

INSERT INTO sales.members(customer_id, member_level)VALUES(1,"Silver");Do sự kiện INSERT này, trigger đã được kích hoạt với in ra thông báo sau:

A new member has been insertedĐể tắt trigger sales.trg_members_insert, chúng ta sử dụng câu lệnh DISABLE TRIGGER nhỏng sau:

DISABLE TRIGGER sales.trg_members_insert ON sales.members;Bây giờ đồng hồ nếu bạn cnhát một sản phẩm mới vào bảng sales.members, trigger sẽ không còn được kích hoạt.

INSERT INTO sales.members(customer_id, member_level)VALUES(2,"Gold");Nó tức là trình kích hoạt đã trở nên loại bỏ hóa.

Lưu ý rằng trigger vẫn còn đấy trên bảng. Nếu các bạn coi trigger trong SQL Server Management Studio (SSMS), các bạn sẽ nhận biết hình tượng chữ thập đỏ trên tên trigger bị vô hiệu hóa hóa:
*

Tắt toàn bộ trigger của bảng trong SQL Server

Để tắt tất cả các trigger của bảng, chúng ta thực hiện câu lệnh sau:

DISABLE TRIGGER ALL ON table_name;Trong câu lệnh này, các bạn chỉ việc hướng dẫn và chỉ định tên của bảng để loại bỏ hóa toàn bộ những trigger trực thuộc về bảng đó.

Câu lệnh sau tạo ra một trigger new ở bảng sales.members được kích hoạt sau sự kiện xóa:

CREATE TRIGGER sales.trg_members_deleteON sales.membersAFTER DELETEASBEGIN PRINT "A new member has been deleted";END;Để tắt toàn bộ những trigger nằm trong bảng sales.members, các bạn áp dụng câu lệnh sau:

DISABLE TRIGGER ALL ON sales.members;Hình ảnh tiếp sau đây cho thấy thêm tinh thần của tất cả những trigger nằm trong bảng sales.members:

*

Tắt toàn bộ những trigger của đại lý dữ liệu vào Squốc lộ Server

Để tắt tất cả các trigger của các đại lý tài liệu hiện tại, các bạn áp dụng câu lệnh sau:

DISABLE TRIGGER ALL ON DATABASE;

Bật trigger vào Squốc lộ Server

Trong phần này, các bạn sẽ tò mò biện pháp sử dụng câu lệnh ENABLE TRIGGER vào SQL Server nhằm bật trigger.

Giới thiệu về câu lệnh ENABLE TRIGGER trong SQL Server

Câu lệnh ENABLE TRIGGER chất nhận được các bạn bật trigger để nó rất có thể được kích hoạt bất cứ khi nào một sự kiện xẩy ra.

Sau phía trên minch họa cú pháp của câu lệnh ENABLE TRIGGER:

ENABLE TRIGGER ON Trong cú pháp này:

Trước tiên, chỉ định thương hiệu của trigger cơ mà bạn muốn nhảy. Theo tùy lựa chọn, bạn có thể hướng dẫn và chỉ định thương hiệu của lược đồ vật cất trigger.Thứ nhị, hướng dẫn và chỉ định bảng đựng trigger nếu nó là trigger DML. Sử dụng DATABASE nếu như trigger là trigger có phạm vi cửa hàng tài liệu DDL hoặc ALL SERVER trường hợp trigger là trigger tất cả phạm vi máy chủ DDL.

lấy ví dụ như về lệnh ENABLE TRIGGER trong Squốc lộ Server

Chúng tôi vẫn áp dụng bảng sales.members được tạo nên trong phần DISABLE TRIGGER nhằm minh họa.

Để bật trigger sales.sales.trg_members_insert, bạn thực hiện câu lệnh sau:

ENABLE TRIGGER sales.trg_members_insertON sales.members;Sau Khi được nhảy, bạn cũng có thể thấy tâm lý của trigger thông qua SQL Server Management Studio nhỏng được hiển thị trong hình sau:

*

Bật toàn bộ trigger của bảng vào Squốc lộ Server

Để nhảy tất cả các trigger của một bảng, bạn thực hiện câu lệnh sau:

ENABLE TRIGGER ALL ON table_name;Trong cú pháp này, các bạn chỉ cần hướng dẫn và chỉ định tên của bảng mà lại bạn muốn bật toàn bộ các trigger được liên kết.

Ví dụ: để bật toàn bộ các trigger của bảng sales.members, chúng ta áp dụng câu lệnh sau:

ENABLE TRIGGER ALL ON sales.members;Bức Ảnh dưới đây cho biết tinh thần của tất cả các trigger của bảng sales.members:

*

Bật tất cả trigger của cơ sở tài liệu trong SQL Server

Để nhảy toàn bộ trigger của đại lý dữ liệu hiện nay, bạn sử dụng câu lệnh sau:

ENABLE TRIGGER ALL ON DATABASE;

4 cách coi code của trigger trong Squốc lộ Server

Trong phần này, các bạn sẽ tò mò 4 biện pháp xem code của trigger trong SQL Server.

Xem code của trigger bằng cách truy tìm vấn tự view hệ thống

Quý khách hàng rất có thể xem code của trigger bằng cách truy hỏi vấn tài liệu dựa vào view sys.sql_modules:

SELECT definition FROM sys.sql_modules WHERE object_id = OBJECT_ID("sales.trg_members_delete");Đây là đầu ra:

*

Trong tróc nã vấn này, chúng ta truyền tên của trigger mà bạn muốn coi code đến hàm OBJECT_ID() vào mệnh đề WHERE.

Xem code của trigger bằng phương pháp sử dụng hàm OBJECT_DEFINITION

Bạn hoàn toàn có thể coi code của trigger bằng phương pháp áp dụng hàm OBJECT_DEFINITION như sau:

SELECT OBJECT_DEFINITION ( OBJECT_ID( "sales.trg_members_delete" ) ) AS trigger_definition;Trong tróc nã vấn này, bạn truyền thương hiệu trigger mang lại hàm OBJECT_ID để đưa ID của trigger. Sau đó, các bạn sử dụng hàm OBJECT_DEFINITION() để đưa code của trigger dựa vào ID của chính nó.

Xem code của trigger bằng cách thực hiện stored procedure sp_helptext

Cách đơn giản và dễ dàng tuyệt nhất để mang code của trigger là thực hiện stored procedure sp_helptext như sau:

EXEC sp_helptext "sales.trg_members_delete" ;Stored procedure sp_helptext trả về code được thực hiện để tạo thành một đối tượng người tiêu dùng, vào ngôi trường đúng theo này là trigger.

Xem code của trigger bằng SSMS

Để xem code của trigger DML:

Trước tiên, vào Object Explorer, kết nối với cửa hàng dữ liệu.Thđọng hai, dịch chuyển cho tới bảng cất trigger nhưng mà bạn có nhu cầu xem code.Thđọng tía, mở rộng menu Triggers, nhấp chuột cần vào trigger bạn có nhu cầu coi code, tiếp nối bấm Modify. Code định nghĩa trigger lộ diện trong cửa sổ truy hỏi vấn.
*

Liệt kê toàn bộ trigger vào SQL Server

Để liệt kê tất cả trigger vào Squốc lộ Server, chúng ta truy hỏi vấn tài liệu tự view sys.triggers nhỏng sau:

SELECT name, is_instead_of_triggerFROM sys.triggers WHERE type = "TR";Tấm hình tiếp sau đây cho thấy thêm đầu ra:

*

Xóa trigger trong Squốc lộ Server

Trong phần này, các bạn sẽ mày mò phương pháp sử dụng câu lệnh DROP TRIGGER vào Squốc lộ Server nhằm xóa các trigger hiện nay có.

Giới ttín hiệu lệnh DROPhường TRIGGER trong Squốc lộ Server

Câu lệnh DROP TRIGGER vào SQL Server xóa một hoặc nhiều trigger khỏi cửa hàng dữ liệu. Phần sau minch họa cú pháp của câu lệnh DROP TRIGGER nhằm xóa trigger DML:

DROP. TRIGGER < IF EXISTS > trigger_name < ,...n >;Trong cú pháp này:

IF EXISTS chỉ xóa trigger Lúc nó vẫn mãi mãi.schema_name là tên của lược đồ vật chứa trigger DML.trigger_name là tên của trigger mà bạn có nhu cầu xóa.

Nếu bạn có nhu cầu xóa các trigger cùng một lúc, bạn phải phân bóc các trigger bằng vết phẩy.

Để xóa một hoặc các trigger DDL, các bạn áp dụng cú pháp sau của câu lệnh DROP TRIGGER:

DROP TRIGGER < IF EXISTS > trigger_name < ,...n > ON DATABASE ;Trong cú pháp này:

DATABASE cho rằng phạm vi của trigger DDL vận dụng đến cơ sở tài liệu ngày nay.ALL SERVER cho biết phạm vi của trigger DDL vận dụng cho hệ thống ngày nay.

Xem thêm: Thép Q345B Là Gì ? Mác Thép Q345 Cập Nhật Chi Tiết Và Mới Nhất

Để xóa trigger sự kiện LOGON, bạn thực hiện cú pháp sau:

DROPhường TRIGGER < IF EXISTS > trigger_name < ,...n > ON ALL SERVER;Lưu ý rằng khi bạn xóa một bảng, toàn bộ trigger được links cùng với bảng cũng tự động hóa bị xóa.

lấy ví dụ như về lệnh DROP TRIGGER trong Squốc lộ Server

Xóa trigger DML trong Squốc lộ ServerCâu lệnh sau đang xóa một trigger DML có tên sales.trg_member_insert:

DROPhường. TRIGGER IF EXISTS sales.trg_member_insert;Xóa trigger DDL trong SQL ServerCâu lệnh sau vẫn xóa trigger DDL có tên trg_index_changes:

DROPhường TRIGGER IF EXISTS trg_index_changes;

Lời kết

Trong khuyên bảo này, bạn vẫn mày mò về:

Squốc lộ Server cung cấp bố loại trigger: Trigger dữ liệu ngữ điệu thao tác làm việc (trigger DML), Trigger dữ liệu ngôn từ có mang (trigger DDL), Trigger singin (trigger Logon).Sử dụng câu lệnh CREATE TRIGGER vào SQL Server nhằm chế tác một trigger mới.Sử dụng câu lệnh DISABLE TRIGGER để tắt trigger vào Squốc lộ Server.Sử dụng câu lệnh ENABLE TRIGGER nhằm bật trigger trong SQL Server.Sử dụng câu lệnh DROPhường TRIGGER nhằm xóa trigger vào SQL Server. SQL Server

Chuyên mục: Định Nghĩa