Trigger trong Squốc lộ Server là các stored procedure đặc biệt được xúc tiến tự động hóa nhằm bình luận với các đối tượng các đại lý dữ liệu, các đại lý tài liệu và những sự khiếu nại sever. SQL Server cung cấp bố nhiều loại trigger:

Trigger tài liệu ngữ điệu khái niệm (Trigger DDL) kích hoạt lúc xẩy ra các câu lệnh CREATE, ALTER cùng DROP.Trigger singin (Trigger Logon) kích hoạt lúc xảy ra những sự khiếu nại LOGON.

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

Tạo trigger vào Squốc lộ Server

Trong phần này, các bạn sẽ tìm hiểu cách sử dụng câu lệnh CREATE TRIGGER vào SQL Server để tạo nên một trigger new.

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

Câu lệnh CREATE TRIGGER cho phép chúng ta sinh sản một trigger bắt đầu sẽ tiến hành kích hoạt tự động bất cứ khi nào một sự khiếu nại như INSERT, DELETE hoặc UPDATE xẩy ra đối với một bảng.

Sau phía trên minch 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 gọi của lược vật nhưng trigger trực thuộc. Tên lược đồ là tùy chọn.trigger_name là tên gọi vày người tiêu dùng chỉ định mang lại trigger.table_name là bảng đang á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 có thể kích hoạt với một hoặc các sự kiện xảy ra nằm trong bảng.Tùy lựa chọn NOT FOR REPLICATION chỉ thị SQL Server ko được kích hoạt trigger Lúc sửa thay đổi tài liệu được tiến hành nlỗi một trong những phần của quy trình xào nấu.sql_statements là một trong những hoặc các câu lệnh Transact-SQL được thực hiện để tiến hành những hành vi sau thời điểm một sự khiếu nại xảy ra.

Các bảng ảo mang lại trigger: INSERTED cùng DELETED

Squốc lộ Server cung ứng hai bảng ảo quan trọng đến trigger là bảng INSERTED với DELETED. Squốc lộ Server thực hiện các bảng này để tích lũy dữ liệu của phiên bản ghi đã sửa thay đổi trước và sau khi sự kiện xảy ra.

Bảng dưới đây cho biết thêm câu chữ của bảng INSERTED với DELETED trước với sau mỗi sự kiện:


Sự kiện Bảng INSERTED cất Bảng DELETED chứa
INSERT Các phiên bản ghi đã có insert Trống
UPDATE Các bản ghi sau thời điểm được update Các bản ghi trước khi được update
DELETE Trống Các bạn dạng ghi đã có được delete

Hãy coi một trong những ví dụ tạo thành trigger trong SQL Server. Chúng tôi đang áp dụng bảng production.products trong cửa hàng tài liệu mẫu BikeStores để minh họa.

*

ví dụ như tạo ra bảng để ghi nhật ký kết núm đổi

Câu lệnh sau đây sản xuất một bảng có tên production.product_audits để ghi lên tiếng khi 1 sự kiện INSERT hoặc DELETE xảy ra so 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 gồm toàn bộ các cột trường đoản cú bảng production.products. Ngoài ra, nó được bổ sung cập nhật thêm 1 vài ba cột nhằm lưu lại hầu như thay đổi ví dụ updated_at, operation và change_id.

lấy ví dụ như chế tạo ra trigger DML trong SQL Server

Thứ nhất, để tạo một trigger mới, các bạn hướng đẫn thương hiệu của trigger và lược đồ dùng mà lại trigger trực thuộc sau đây mệnh đề CREATE TRIGGER như sau:

CREATE TRIGGER production.trg_product_auditTiếp theo, chúng ta chỉ định thương hiệu của bảng vào mệnh đề ON, trigger đang kích hoạt lúc xẩy ra sự khiếu nại trong bảng này:

ON production.productsSau đó, các bạn liệt kê một hoặc các 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ởi từ bỏ khóa AS:

ASBEGINSau kia, bên trong thân của trigger, chúng ta tùy chỉnh SET NOCOUNT ON nhằm ngăn ngừa thông báo con số bản ghi bị tác động bất cứ khi nào trigger được kích hoạt.

SET NOCOUNT ON;Trigger đã INSERT một bản ghi vào bảng production.product_audits bất cứ bao giờ một phiên bản ghi được chèn vào hoặc xóa khỏi bảng production.products. Dữ liệu nhằm ckém vào bảng production.product_audits được cung cấp từ bỏ bảng INSERTED với DELETED trải qua tân oán tử UNION ALL nhỏng 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 đây câu lệnh tạo ra 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 cùng, các bạn tiến hành câu lệnh bên trên để chế tạo ra trigger. Khi trigger được chế tác, bạn cũng có thể kiếm tìm thấy nó trong thỏng mục Triggers của bảng nhỏng 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 tiếp sau đây chèn một bạn dạng ghi bắt đầu 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ự kiện INSERT này, trigger production.trg_product_audit đã có kích hoạt trong bảng production.products cùng cnhát một phiên bản ghi vào bảng production.product_audits.

Hãy coi văn bản 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 bản ghi khỏi bảng production.products:

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

SELECT * FROM production.product_audits;Hình ảnh sau đây cho biết thêm đầu ra:

*

Trong chỉ dẫn này, chúng ta đã học tập bí quyết sản xuất một kích hoạt vào SQL Server nhằm đáp ứng nhu cầu với 1 hoặc các sự khiếu nại như cnhát với xóa.

Trigger INSTEAD OF trong Squốc lộ Server

Trong phần này, các bạn sẽ tìm hiểu phương pháp sử dụng trigger INSTEAD OF vào Squốc lộ Server để cyếu dữ liệu vào bảng thông qua view.

Trigger INSTEAD OF là gì?

Trigger INSTEAD OF là một trong trigger chất nhận được các bạn vứt qua 1 câu lệnh INSERT, DELETE hoặc UPDATE một bảng hoặc một view cùng triển khai câu lệnh khác được quan niệm vào trigger. Các thao tác ckém, xóa hoặc update thực tiễn trọn vẹn ko xảy ra.

Nói biện pháp không giống, trigger INSTEAD OF quăng quật sang một câu lệnh DML với triển khai những câu lệnh khác được khái niệm trong trigger.

Cú pháp trigger INSTEAD OF vào Squốc lộ Server

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

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

trước hết, hướng dẫn và chỉ định thương hiệu của trigger cùng lược đồ dùng (tùy chọn) mà lại trigger nằm trong sau đây mệnh đề CREATE TRIGGER.Thđọng hai, hướng dẫn và chỉ định thương hiệu của bảng hoặc view link cùng với trigger.Thứ đọng cha, xác minh một sự kiện nhằm kích hoạt trigger INSTEAD OF nhỏng INSERT, DELETE hoặc UPDATE. Trigger có thể được kích hoạt với cùng 1 hoặc các sự khiếu nại.Thứ đọng bốn, tư tưởng phần thân của trigger sau trường đoản cú khóa AS. Phần thân của trigger rất có thể gồm 1 hoặc các câu lệnh Transact-SQL.

ví dụ như về trigger INSTEAD OF trong SQL Server

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

Giả sử, một áp dụng bắt buộc ckém các thương hiệu new vào bảng production.brands. Tuy nhiên, những uy tín new đề nghị được tàng trữ trong một bảng không giống được Hotline là production.brand_approvals để phê chăm bẵm trước lúc cnhát vào bảng production.brands.

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

Hình ảnh dưới đây minc họa thừa trình:

*

Sơ đồ này sẽ không hiển thị thương hiệu lược đồ dùng của tất cả những đối tượng người sử dụng cửa hàng tài liệu vày mục tiêu dễ dàng và đơn giản.

Câu lệnh sau đây sản xuất một bảng new mang tên production.brand_approvals nhằm tàng trữ những uy tín đã ngóng đượ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 tiếp sau đây tạo thành một view mới thương hiệu là production.vw_brands phụ thuộc bảng production.brands cùng 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;lúc một bạn dạng ghi được ckém vào view production.vw_brands, bọn họ nên chuyển nó cho tới bảng production.brand_approvals trải qua trigger INSTEAD OF nlỗi 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 chèn tên thương hiệu new vào bảng production.brand_approvals ví như thương hiệu ko tồn tại trong bảng production.brands.

Bây giờ đồng hồ chúng ta hãy cyếu một uy tín mới vào view production.vw_brands để xem cthị xã gì xẩy ra nhé:

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

Nếu các bạn tầm nã vấn dữ liệu tự view production.vw_brands, bạn sẽ thấy một phiên bản ghi new xuất hiện:

SELECT brand_name, approval_statusFROM production.vw_brands;

*
Câu lệnh dưới đây cho thấy thêm ngôn từ của bảng production.brand_approvals:

SELECT *FROM production.brand_approvals;

*
Trong phần này, các bạn vẫn tìm hiểu về trigger INSTEAD OF vào Squốc lộ Server và biện pháp sản xuất trigger INSTEAD OF nhằm cnhát tài liệu vào bảng thông qua view.

Trigger DDL vào SQL Server

Trong phần này, bạn sẽ tò mò giải pháp áp dụng trigger ngôn từ tư tưởng dữ liệu (Data Definition Language - DDL) của SQL Server để quan sát và theo dõi các chuyển đổi được triển khai so với những đối tượng người sử dụng các đại lý tài liệu.

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

Trigger DDL của Squốc lộ Server đánh giá những sự khiếu nại sever hoặc các đại lý tài liệu hơn là các sửa đổi tài liệu bảng. Những sự khiếu nại này được tạo thành bởi vì những câu lệnh Transact-SQL hay bắt đầu với cùng 1 Một trong những từ khóa sau CREATE, ALTER, DROPhường, GRANT, DENY, REVOKE hoặc UPDATE STATISTICS.

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

Trigger DDL có lợi trong những ngôi trường thích hợp sau:

Ghi lại các biến đổi trong lược thiết bị cơ sở tài liệu.Ngăn chặn một vài biến hóa rõ ràng đối với lược trang bị cơ sở dữ liệu.Phản ứng với cùng một biến hóa vào lược đồ đại lý tài liệu.

Phần sau trình bày cú pháp sản xuất trigger DDL:

CREATE TRIGGER trigger_nameON DATABASE FOR event_type AS sql_statement

trigger_name

Chỉ định tên trình kích hoạt bởi người dùng khái niệm sau trường đoản cú khóa CREATE TRIGGER. Lưu ý rằng chúng ta không hẳn chỉ định lược trang bị (schema) cho một trigger DDL vày nó không tương quan đến table hoặc view cửa hàng dữ liệu thực tiễn.

DATABASE | ALL SERVER

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

ddl_trigger_option

Các tùy chọn ddl_trigger_option chứng thật mệnh đề ENCRYPTION cùng / hoặc EXECUTE AS. ENCRYPTION mã hóa tư tưởng của trigger. EXECUTE AS xác định bối cảnh bảo mật nhưng mà Từ đó trigger được xúc tiến.

Xem thêm: Bệnh Leukemia Là Gì ? Nguyên Nhân, Cách Chẩn Đoán Và Điều Trị

event_type | event_group

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

event_group là một trong đội những 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ự kiện.

lấy một ví dụ về tạo nên trigger DDL trong Squốc lộ Server

Giả sử bạn muốn thâu tóm tất cả các sửa thay đổi được triển khai so với chỉ mục các đại lý tài liệu nhằm chúng ta cũng có thể theo dõi và quan sát giỏi rộng hiệu suất của sản phẩm công ty đại lý tài liệu liên quan tới các biến hóa chỉ mục này.

Trước hết, sinh sản một bảng mới mang tên index_logs nhằm ghi các chuyển đổi 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ác một trigger DDL để theo dõi và quan sát các đổi khác chỉ mục với cnhát 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 vẫn thực hiện hàm EVENTDATA() trả về công bố về các sự kiện sever hoặc cơ sở tài 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 đó, chế tạo chỉ mục cho 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 vấn tài liệu từ bảng index_changes để bình chọn xem sự khiếu nại sản xuất chỉ mục dành được trình kích hoạt lưu lại đúng chuẩn xuất xắc 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, chúng ta có thể xem tài liệu XML của sự kiện nlỗi sau:

*

Trong phần này, chúng ta đang tò mò phương pháp tạo nên trigger DDL vào SQL Server bình luận một hoặc nhiều sự kiện DDL.

Tắt trigger vào Squốc lộ Server

Trong phần này, bạn sẽ tò mò giải pháp thực hiện câu lệnh DISABLE TRIGGER vào SQL Server nhằm tắt trigger.

Giới thiệu lệnh DISABLE TRIGGER vào SQL Server

thường thì, bởi vì mục tiêu khắc chế sự cố gắng hoặc phục sinh dữ liệu, chúng ta cũng có thể ước ao tắt trong thời điểm tạm thời trigger. Để làm cho vấn đề đó, bạn sử dụng câu lệnh DISABLE TRIGGER:

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

Trước hết, hãy hướng đẫn tên của lược vật dụng chứa trigger cùng tên của trigger nhưng mà bạn có nhu cầu tắt sau lệnh DISABLE TRIGGER.Thứ đọng nhì, hướng đẫn thương hiệu bảng hoặc view mà lại trigger được link trường hợp trigger là trigger DML. Sử dụng DATABASE nếu trigger bao gồm phạm vi cơ sở tài liệu DDL hoặc SERVER nếu trigger gồm phạm vi sever DDL.

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

Câu lệnh sau sản xuất một bảng bắt đầu mang tên sales.members để minh họa:

CREATE TABLE sales.members ( member_id INT IDENTITY PRIMARY KEY, customer_id INT NOT NULL, member_level CHAR(10) NOT NULL);Câu lệnh sau tạo ra một trigger được kích hoạt bất cứ lúc nào một sản phẩm bắt đầu được ckém vào bảng sales.members. Với mục đích minh họa, trigger chỉ trả về một thông tin dễ dàng.

CREATE TRIGGER sales.trg_members_insertON sales.membersAFTER INSERTASBEGIN PRINT "A new member has been inserted";END;Câu lệnh sau đã cnhát một hàng bắt đầu 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 đã làm được kích hoạt và in ra thông báo sau:

A new thành viên has been insertedĐể tắt trigger sales.trg_members_insert, các bạn áp 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 khách hàng chèn một hàng bắt đầu vào bảng sales.members, trigger sẽ không được kích hoạt.

INSERT INTO sales.members(customer_id, member_level)VALUES(2,"Gold");Nó Có nghĩa là trình kích hoạt đã trở nên vô hiệu hóa.

Lưu ý rằng trigger vẫn tồn tại trên bảng. Nếu chúng ta 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:
*

Tắt tất cả trigger của bảng vào SQL Server

Để tắt toàn bộ những trigger của bảng, chúng ta áp dụng câu lệnh sau:

DISABLE TRIGGER ALL ON table_name;Trong câu lệnh này, chúng ta chỉ việc hướng dẫn và chỉ định tên của bảng nhằm vô hiệu hóa hóa toàn bộ các trigger thuộc về bảng đó.

Câu lệnh sau chế tác một trigger bắt đầu trong 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ộ các trigger trên bảng sales.members, bạn áp dụng câu lệnh sau:

DISABLE TRIGGER ALL ON sales.members;Bức Ảnh sau đây cho biết thêm tâm trạng của toàn bộ các trigger thuộc bảng sales.members:

*

Tắt tất cả các trigger của đại lý dữ liệu vào SQL Server

Để tắt toàn bộ các trigger của đại lý tài liệu hiện thời, chúng ta sử dụng câu lệnh sau:

DISABLE TRIGGER ALL ON DATABASE;

Bật trigger trong SQL Server

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

Giới thiệu về câu lệnh ENABLE TRIGGER vào Squốc lộ Server

Câu lệnh ENABLE TRIGGER cho phép các bạn nhảy trigger để nó có thể được kích hoạt bất kể lúc nào một sự khiếu nại xảy ra.

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

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

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

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

Chúng tôi vẫn thực hiện bảng sales.members được sản xuất vào phần DISABLE TRIGGER để minch họa.

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

ENABLE TRIGGER sales.trg_members_insertON sales.members;Sau lúc đượ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ị vào hình sau:

*

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

Để bật toàn bộ những trigger của một bảng, chúng ta áp dụng câu lệnh sau:

ENABLE TRIGGER ALL ON table_name;Trong cú pháp này, bạn chỉ cần hướng đẫn thương hiệu của bảng cơ mà bạn muốn bật tất cả các trigger được link.

Ví dụ: nhằm bật tất cả những trigger của bảng sales.members, chúng ta áp dụng câu lệnh sau:

ENABLE TRIGGER ALL ON sales.members;Tấm hình dưới đây cho biết thêm tâm trạng của tất cả các trigger của bảng sales.members:

*

Bật tất cả trigger của các đại lý dữ liệu trong SQL Server

Để bật toàn bộ trigger của cơ sở dữ liệu bây chừ, bạn sử dụng câu lệnh sau:

ENABLE TRIGGER ALL ON DATABASE;

4 phương pháp xem code của trigger trong Squốc lộ Server

Trong phần này, các bạn sẽ mày mò 4 bí quyết xem code của trigger vào SQL Server.

Xem code của trigger bằng phương pháp tróc nã vấn tự view hệ thống

Bạn hoàn toàn có thể xem code của trigger bằng phương pháp truy hỏi vấn dữ 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 truy nã vấn này, các bạn truyền tên của trigger cơ mà bạn có nhu cầu coi code đến hàm OBJECT_ID() vào mệnh đề WHERE.

Xem code của trigger bằng cách áp dụng hàm OBJECT_DEFINITION

Quý Khách 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ỏng sau:

SELECT OBJECT_DEFINITION ( OBJECT_ID( "sales.trg_members_delete" ) ) AS trigger_definition;Trong truy tìm vấn này, chúng ta truyền tên trigger mang đến hàm OBJECT_ID để đưa ID của trigger. Sau đó, bạn sử dụng hàm OBJECT_DEFINITION() để đưa code của trigger dựa trên 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 dễ dàng và đơn giản độc nhất vô nhị để đưa code của trigger là sử dụng stored procedure sp_helptext như sau:

EXEC sp_helptext "sales.trg_members_delete" ;Stored procedure sp_helptext trả về code được sử dụng nhằm tạo thành một đối tượng người sử dụng, trong ngôi trường thích hợp này là trigger.

Xem code của trigger bằng SSMS

Để coi code của trigger DML:

trước hết, vào Object Explorer, kết nối cùng với các đại lý dữ liệu.Thứ nhì, dịch rời tới bảng đựng trigger nhưng bạn có nhu cầu xem code.Thứ bố, không ngừng mở rộng thực đơn Triggers, nhấn vào cần vào trigger bạn có nhu cầu coi code, sau đó bnóng Modify. Code có mang trigger mở ra trong hành lang cửa số truy vấn vấn.
*

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

Để liệt kê toàn bộ trigger trong Squốc lộ Server, bạn tầm nã vấn dữ liệu từ view sys.triggers nhỏng sau:

SELECT name, is_instead_of_triggerFROM sys.triggers WHERE type = "TR";Bức Ảnh dưới đây cho thấy đầu ra:

*

Xóa trigger trong SQL Server

Trong phần này, bạn sẽ mày mò cách áp dụng câu lệnh DROPhường TRIGGER vào Squốc lộ Server để xóa các trigger hiện nay gồm.

Giới ttín lệnh DROPhường TRIGGER vào Squốc lộ Server

Câu lệnh DROPhường TRIGGER vào Squốc lộ Server xóa một hoặc những trigger khỏi cửa hàng tài liệu. Phần sau minch họa cú pháp của câu lệnh DROPhường TRIGGER để xóa trigger DML:

DROPhường TRIGGER < IF EXISTS > trigger_name < ,...n >;Trong cú pháp này:

IF EXISTS chỉ xóa trigger khi nó vẫn lâu dài.schema_name là tên của lược trang bị đựng trigger DML.trigger_name là tên gọi của trigger nhưng bạn có nhu cầu xóa.

Nếu bạn có nhu cầu xóa nhiều trigger và một dịp, bạn phải phân tách bóc các trigger bởi vết phẩy.

Để xóa một hoặc nhiều trigger DDL, chúng ta thực hiện cú pháp sau của câu lệnh DROP TRIGGER:

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

DATABASE chỉ ra rằng phạm vi của trigger DDL áp dụng cho cơ sở dữ liệu ngày nay.ALL SERVER cho thấy thêm phạm vi của trigger DDL áp dụng cho server hiện giờ.

Để xóa trigger sự khiếu nại LOGON, bạn áp dụng cú pháp sau:

DROP 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 link cùng với bảng cũng tự động bị xóa.

Ví dụ về lệnh DROPhường TRIGGER vào Squốc lộ Server

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

DROP TRIGGER IF EXISTS sales.trg_member_insert;Xóa trigger DDL vào Squốc lộ ServerCâu lệnh sau sẽ xóa trigger DDL mang tên trg_index_changes:

DROPhường. TRIGGER IF EXISTS trg_index_changes;

Lời kết

Trong khuyên bảo này, chúng ta sẽ khám phá về:

Squốc lộ Server cung cấp ba một số loại trigger: Trigger dữ liệu ngữ điệu thao tác (trigger DML), Trigger dữ liệu ngôn từ định nghĩa (trigger DDL), Trigger đăng nhập (trigger Logon).Sử dụng câu lệnh CREATE TRIGGER trong Squốc lộ Server nhằm tạo thành một trigger new.Sử dụng câu lệnh DISABLE TRIGGER nhằm tắt trigger trong Squốc lộ Server.Sử dụng câu lệnh ENABLE TRIGGER để bật trigger vào SQL Server.Sử dụng câu lệnh DROP TRIGGER để xóa trigger trong SQL Server.