Trigger là gì sql

  -  

Trigger vào SQL Server là các stored procedure quan trọng đặc biệt được tiến hành tự động hóa để phản hồi với các đối tượng người dùng cửa hàng dữ liệu, cơ sở dữ liệu và những sự khiếu nại máy chủ. Squốc lộ Server hỗ trợ tía nhiều loại trigger:

Trigger tài liệu ngữ điệu quan niệm (Trigger DDL) kích hoạt khi xảy ra các câu lệnh CREATE, ALTER cùng DROPhường.Trigger singin (Trigger Logon) kích hoạt Khi xảy ra những sự kiện LOGON.

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

Tạo trigger trong Squốc lộ Server

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

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

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

Sau trên đâ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 thiết bị nhưng trigger trực thuộc. Tên lược trang bị là tùy chọn.trigger_name là tên gọi vì chưng người tiêu dùng hướng dẫn và chỉ định đến trigger.table_name là bảng vẫn áp dụng trigger.Sự kiện kích hoạt trigger được liệt kê vào câu lệnh AFTER. Sự kiện này có thể là INSERT, UPDATE hoặc DELETE. Một trigger có thể kích hoạt với cùng một hoặc nhiều sự kiện 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 thay đổi dữ liệu được triển khai nhỏng một phần của quy trình sao chép.sql_statements là một trong những hoặc nhiều câu lệnh Transact-Squốc lộ được áp dụng nhằm thực hiện những hành vi sau khoản thời gian một sự khiếu nại xẩy ra.

Các bảng ảo đến trigger: INSERTED cùng DELETED

SQL Server cung ứng nhì bảng ảo đặc trưng mang đến trigger là bảng INSERTED cùng DELETED. Squốc lộ Server thực hiện các bảng này nhằm tích lũy tài liệu của bạn dạng ghi vẫn sửa đổi trước với sau thời điểm sự kiện xẩy ra.

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


Sự khiếu nại Bảng INSERTED cất Bảng DELETED cất
INSERT Các bạn dạng ghi đã có được insert Trống
UPDATE Các phiên bản ghi sau khoản thời gian được update Các bản ghi trước lúc đượ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ụ sản xuất trigger trong SQL Server. Chúng tôi sẽ áp dụng bảng production.products vào đại lý dữ liệu mẫu BikeStores để minch họa.

*

Ví dụ tạo ra bảng nhằm ghi nhật cam kết nạm đổi

Câu lệnh tiếp sau đây chế tạo một bảng mang tên production.product_audits nhằm ghi lên tiếng khi một 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 có tất cả những cột trường đoản cú bảng production.products. Bên cạnh đó, nó được bổ sung cập nhật thêm một vài cột để đánh dấu đa số đổi khác ví dụ updated_at, operation cùng change_id.

lấy một ví dụ tạo ra trigger DML trong SQL Server

Đầu tiên, nhằm chế tạo ra một trigger new, chúng ta hướng đẫn thương hiệu của trigger và lược trang bị cơ mà trigger ở trong sau đây mệnh đề CREATE TRIGGER nhỏng sau:

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

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

AFTER INSERT, DELETEPhần thân của trigger bước đầu bởi từ khóa AS:

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

SET NOCOUNT ON;Trigger đang INSERT một bạn dạng ghi vào bảng production.product_audits bất cứ khi nào một bản ghi được cyếu vào hoặc xóa bỏ bảng production.products. Dữ liệu để cyếu vào bảng production.product_audits được cung cấp từ bảng INSERTED và DELETED trải qua toán thù 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 trên đây câu lệnh sản xuất 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 hiện câu lệnh bên trên để chế tạo trigger. Khi trigger được tạo thành, chúng ta có thể tra cứu thấy nó trong thư 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 vào SQL Server

Câu lệnh dưới đây cyếu 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 chèn một bản 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 bản ghi khỏi bảng production.products:

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

SELECT * FROM production.product_audits;Bức Ảnh dưới đây cho biết đầu ra:

*

Trong lý giải này, bạn sẽ học giải pháp sinh sản một kích hoạt vào Squốc lộ Server để thỏa mãn nhu cầu với một hoặc nhiều sự kiện như cnhát với xóa.

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

Trong phần này, bạn sẽ tò mò cách sử dụng trigger INSTEAD OF vào SQL Server nhằm cnhát dữ liệu vào bảng trải qua view.

Trigger INSTEAD OF là gì?

Trigger INSTEAD OF là 1 trigger được cho phép bạn quăng quật sang 1 câu lệnh INSERT, DELETE hoặc UPDATE một bảng hoặc một view và thực thi câu lệnh không giống được quan niệm trong trigger. Các làm việc chèn, xóa hoặc cập nhật thực tế trọn vẹn ko xảy ra.

Nói biện pháp không giống, trigger INSTEAD OF bỏ sang 1 câu lệnh DML cùng thực thi các câu lệnh không giống được quan niệm trong trigger.

Cú pháp trigger INSTEAD OF vào SQL Server

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

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

Trước hết, chỉ định thương hiệu của trigger cùng lược đồ dùng (tùy chọn) mà lại trigger thuộc sau đây mệnh đề CREATE TRIGGER.Thứ đọng nhì, chỉ định và hướng dẫn tên của bảng hoặc view liên kết cùng với trigger.Thđọng ba, xác định một sự kiện để 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 một hoặc các sự kiện.Thứ đọng bốn, khái niệm phần thân của trigger sau tự khóa AS. Phần thân của trigger có thể gồm một hoặc các câu lệnh Transact-SQL.

Ví dụ về trigger INSTEAD OF trong Squốc lộ Server

Một ví dụ điển hình nổi bật của Việc áp dụng trigger INSTEAD OF là ghi đtrần thao tác ckém, update hoặc xóa trên view.

Giả sử, một vận dụng yêu cầu cnhát những uy tín new vào bảng production.brands. Tuy nhiên, các uy tín new đề nghị được tàng trữ vào một bảng không giống được Điện thoại tư vấn là production.brand_approvals nhằm phê coi sóc trước lúc cyếu vào bảng production.brands.

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

Bức Ảnh sau đây minh họa quá trình:

*

Sơ đồ này không hiển thị thương hiệu lược đồ của tất cả những đối tượng đại lý tài liệu bởi vì mục tiêu dễ dàng và đơn giản.

Câu lệnh dưới đây tạo thành một bảng mới mang tên production.brand_approvals để tàng trữ những thương hiệu đã 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 dưới đây tạo nên một view new 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 bạn dạng ghi được chèn vào view production.vw_brands, chúng ta đề nghị đưa 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 bắt đầu vào bảng production.brand_approvals nếu thương hiệu ko mãi mãi vào bảng production.brands.

Bây giờ bọn họ hãy cnhát một chữ tín bắt đầu vào view production.vw_brands để thấy cthị trấn gì xảy ra nhé:

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

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

SELECT brand_name, approval_statusFROM production.vw_brands;

*
Câu lệnh dưới đây cho biết thêm câu chữ của bảng production.brand_approvals:

SELECT *FROM production.brand_approvals;

*
Trong phần này, các bạn đang mày mò về trigger INSTEAD OF vào SQL Server và cách tạo trigger INSTEAD OF để ckém dữ liệu vào bảng thông qua view.

Trigger DDL vào Squốc lộ Server

Trong phần này, bạn sẽ tò mò cách thực hiện trigger ngữ điệu khái niệm dữ liệu (Data Definition Language - DDL) của SQL Server nhằm theo dõi những biến đổi được triển khai đối với các đối tượng người sử dụng cơ sở tài liệu.

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

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

Ví dụ: bạn cũng có thể viết một trigger DDL nhằm ghi nhật cam kết bất cứ khi nào người tiêu dùng tiến hành câu lệnh CREATE TABLE hoặc ALTER TABLE.

Trigger DDL bổ ích trong các ngôi trường thích hợp sau:

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

Phần sau trình bày cú pháp chế tạo trigger DDL:

CREATE TRIGGER trigger_nameON DATABASE FOR event_type AS sql_statement

trigger_name

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

DATABASE | ALL SERVER

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

ddl_trigger_option

Các tùy lựa chọn ddl_trigger_option chứng minh 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 mà lại Từ đó trigger được triển khai.

Xem thêm: Trò Chơi Bãi Biển Đơn Giản, Top 4 Trò Chơi Teambuilding Trên Biển

event_type | event_group

Các event_type đã cho thấy một sự khiếu nại DDL kích hoạt trigger nhỏng CREATE_TABLE, ALTER_TABLE, vv.

event_group là một trong những nhóm những sự khiếu nại event_type chẳng hạn như DDL_TABLE_EVENTS.

Trigger hoàn toàn có thể đăng ký một hoặc các sự kiện hoặc team sự kiện.

Ví dụ về chế tạo 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 thực hiện so với chỉ mục các đại lý dữ liệu nhằm bạn có thể theo dõi tốt rộng hiệu suất của máy nhà đại lý tài liệu tương quan tới những đổi khác chỉ mục này.

Đầu tiên, chế tác một bảng mới mang tên index_logs để 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, tạo nên một trigger DDL nhằm theo dõi và quan sát những thay đổi chỉ mục và cnhát tài 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, chúng tôi vẫn áp dụng hàm EVENTDATA() trả về công bố về các sự kiện máy chủ hoặc cửa hàng 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 đăng nhập.

Sau đó, chế tác chỉ mục mang đến cột first_name với 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 đó, tầm nã vấn dữ liệu tự bảng index_changes để khám nghiệm coi sự kiện chế tạo ra chỉ mục giành được trình kích hoạt lưu lại đúng cách tốt không:

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

*

Nếu chúng ta nhấp vào ô của cột event_data, chúng ta cũng có thể coi dữ liệu XML của sự việc khiếu nại nlỗi sau:

*

Trong phần này, chúng ta đã tìm hiểu biện pháp chế tác trigger DDL vào Squốc lộ Server bình luận một hoặc những sự kiện DDL.

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

Trong phần này, các bạn sẽ tìm hiểu phương pháp áp dụng câu lệnh DISABLE TRIGGER trong Squốc lộ Server để tắt trigger.

Giới thiệu lệnh DISABLE TRIGGER trong SQL Server

Thông thường, vì chưng mục đích khắc phục sự cụ hoặc phục sinh dữ liệu, chúng ta có thể mong mỏi tắt trong thời điểm tạm thời trigger. Để làm điều này, chúng ta áp 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 thiết bị cất trigger và thương hiệu của trigger nhưng mà bạn muốn tắt sau lệnh DISABLE TRIGGER.Thđọng nhị, hướng đẫn thương hiệu bảng hoặc view cơ mà trigger được liên kết trường hợp trigger là trigger DML. Sử dụng DATABASE nếu như trigger gồm phạm vi cửa hàng dữ liệu DDL hoặc SERVER giả dụ trigger bao gồm phạm vi sever DDL.

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

Câu lệnh sau chế tạo một bảng bắt đầu có 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 thành một trigger được kích hoạt bất cứ khi nào một mặt hàng mới được chèn vào bảng sales.members. Với mục tiêu minc 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 đang ckém mộ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 đã có đượ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, các bạn áp dụng câu lệnh DISABLE TRIGGER nlỗi sau:

DISABLE TRIGGER sales.trg_members_insert ON sales.members;Bây tiếng nếu khách hàng chèn một sản phẩm bắt đầu 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ó có nghĩa là trình kích hoạt đã trở nên loại bỏ hóa.

Lưu ý rằng trigger vẫn còn đó ở bảng. Nếu bạn xem trigger vào Squốc lộ Server Management Studio (SSMS), các bạn sẽ nhận thấy biểu tượng chữ thập đỏ bên trên tên trigger bị loại bỏ hóa:
*

Tắt tất cả trigger của bảng vào Squốc lộ Server

Để tắt tất cả những trigger của bảng, các bạn sử 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 thương hiệu của bảng để vô hiệu hóa hóa toàn bộ các trigger thuộc về bảng đó.

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

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

DISABLE TRIGGER ALL ON sales.members;Tấm hình sau đây cho thấy tâm trạng của tất cả những trigger trực thuộc bảng sales.members:

*

Tắt toàn bộ các trigger của cơ sở dữ liệu trong Squốc lộ Server

Để tắt toàn bộ những trigger của cửa hàng dữ liệu hiện giờ, các bạn áp dụng câu lệnh sau:

DISABLE TRIGGER ALL ON DATABASE;

Bật trigger trong Squốc lộ Server

Trong phần này, bạn sẽ mày mò giải pháp áp dụng câu lệnh ENABLE TRIGGER trong Squốc lộ 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 có thể chấp nhận được bạn bật trigger để nó rất có thể được kích hoạt bất kể lúc 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 hết, hướng dẫn và chỉ định tên của trigger nhưng mà bạn muốn nhảy. Theo tùy lựa chọn, chúng ta cũng có thể hướng dẫn và chỉ định tên của lược đồ cất trigger.Thứ đọng nhì, hướng dẫn và chỉ định bảng chứa trigger giả dụ nó là trigger DML. Sử dụng DATABASE ví như trigger là trigger có phạm vi các đại lý tài liệu DDL hoặc ALL SERVER nếu trigger là trigger có phạm vi máy chủ DDL.

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

Chúng tôi vẫn sử dụng bảng sales.members được chế tạo ra trong phần DISABLE TRIGGER nhằm minc họa.

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

ENABLE TRIGGER sales.trg_members_insertON sales.members;Sau Lúc được bật, chúng ta cũng có thể thấy tâm trạng của trigger thông qua SQL Server Management Studio như được hiển thị vào hình sau:

*

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

Để nhảy toàn bộ các 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, chúng ta chỉ cần chỉ định và hướng dẫn tên của bảng mà lại bạn muốn nhảy tất cả những trigger được links.

Ví dụ: nhằm nhảy toàn bộ các trigger của bảng sales.members, các bạn thực hiện câu lệnh sau:

ENABLE TRIGGER ALL ON sales.members;Hình ảnh sau đây cho biết tâm trạng của toàn bộ những trigger của bảng sales.members:

*

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

Để nhảy toàn bộ trigger của đại lý tài liệu hiện nay, chúng ta áp dụng câu lệnh sau:

ENABLE TRIGGER ALL ON DATABASE;

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

Trong phần này, các bạn sẽ mày mò 4 phương pháp xem code của trigger trong Squốc lộ Server.

Xem code của trigger bằng cách tầm nã vấn trường đoản cú view hệ thống

quý khách hàng rất có thể coi code của trigger bằng phương pháp tróc nã 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 truy hỏi vấn này, các bạn truyền tên của trigger cơ mà bạn muốn coi code mang lại hàm OBJECT_ID() trong mệnh đề WHERE.

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

quý khách hoàn toàn có thể xem code của trigger bằng phương pháp sử dụng hàm OBJECT_DEFINITION như sau:

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

Xem code của trigger bằng phương pháp sử dụng stored procedure sp_helptext

Cách đơn giản và dễ dàng độc nhất vô nhị để lấy 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 áp dụng để tạo nên một đối tượng người sử dụng, trong ngôi trường hòa hợp này là trigger.

Xem code của trigger bằng SSMS

Để xem code của trigger DML:

Thứ nhất, vào Object Explorer, liên kết với các đại lý dữ liệu.Thứ đọng nhị, dịch rời cho tới bảng cất trigger nhưng bạn có nhu cầu coi code.Thứ đọng bố, mở rộng thực đơn Triggers, nhấp chuột bắt buộc vào trigger bạn muốn coi code, tiếp đến bấm Modify. Code định nghĩa trigger xuất hiện thêm vào cửa sổ truy vấn.
*

Liệt kê toàn bộ trigger vào Squốc lộ Server

Để liệt kê tất cả trigger trong SQL Server, chúng ta tróc nã vấn tài liệu từ view sys.triggers như sau:

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

*

Xóa trigger vào Squốc lộ Server

Trong phần này, bạn sẽ khám phá phương pháp thực hiện câu lệnh DROPhường. TRIGGER vào Squốc lộ Server nhằm xóa những trigger hiện tại tất cả.

Giới ttín lệnh DROPhường. TRIGGER vào SQL Server

Câu lệnh DROP TRIGGER trong Squốc lộ Server xóa một hoặc các trigger khỏi cơ sở dữ liệu. Phần sau minh 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ó đã mãi mãi.schema_name là tên gọi của lược vật đựng trigger DML.trigger_name là tên của trigger nhưng bạn muốn xóa.

Nếu bạn muốn xóa nhiều trigger cùng một thời gian, bạn cần phân bóc tách những trigger bằng vết phẩy.

Để xóa một hoặc nhiều trigger DDL, các bạn sử 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 là 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 mang lại VPS hiện nay.

Xem thêm: Mô Hình Kinh Nghiệm Kinh Doanh Phòng Net Hiệu Quả Cho Người Mới!

Để xóa trigger sự kiện LOGON, các bạn sử dụng cú pháp sau:

DROPhường TRIGGER < IF EXISTS > trigger_name < ,...n > ON ALL SERVER;Lưu ý rằng khi chúng ta xóa một bảng, tất cả trigger được link với bảng cũng auto bị xóa.

lấy một ví dụ về lệnh DROPhường TRIGGER vào SQL Server

Xóa trigger DML trong Squốc lộ ServerCâu lệnh sau đã 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 đang xóa trigger DDL mang tên trg_index_changes:

DROP.. TRIGGER IF EXISTS trg_index_changes;

Lời kết

Trong hướng dẫn này, bạn đang tìm hiểu về:

SQL Server cung ứng bố nhiều loại trigger: Trigger dữ liệu ngữ điệu làm việc (trigger DML), Trigger dữ liệu ngữ điệu quan niệm (trigger DDL), Trigger singin (trigger Logon).Sử dụng câu lệnh CREATE TRIGGER trong SQL Server để tạo nên một trigger new.Sử dụng câu lệnh DISABLE TRIGGER để tắt trigger trong SQL 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 vào SQL Server.