Trigger Trong Sql Là Gì

  -  
trang chủ » Tài Liệu Kỹ Thuật » Trigger SQL là gì? Cách tạo nên và ví dụ về Trigger trong Squốc lộ Server

Trigger SQL là gì?

Trigger trong SQL VPS là 1 trong đoạn procedure code, chỉ được quản lý và vận hành khi tất cả một sự khiếu nại xẩy ra. Có nhiều nhiều loại sự khiếu nại khác biệt để kích hoạt trigger vào SQL. Có thể nói đến như câu hỏi cyếu các hàng vào bảng, đổi khác kết cấu bảng hoặc thậm chí người dùng singin vào một phiên bản SQL Server.

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

*
Trigger trong SQL

Có cha điểm lưu ý chính có tác dụng cho trigger vào Squốc lộ khác với các stored procedures:

Người dùng quan trọng tiến hành bằng tay những trigger.Không tất cả cơ hội mang đến trigger dìm thông số.Quý khách hàng sẽ không còn thể cam đoan hoặc khôi phục một transaction bên phía trong trigger.

Việc tất yêu thực hiện những tsi số bên trên trigger vào Squốc lộ chưa hẳn là hạn chế để dấn biết tin tự sự khiếu nại. Nhưng các bạn sẽ tất cả những gạn lọc thay thế để đưa thông báo từ bỏ các sự kiện.


Nội dung

Ưu điểm với nhược điểm của Triggerlấy ví dụ như về Trigger vào SQL

Cú pháp của Trigger

Trong đoạn code dưới đây, bạn sẽ thấy cú pháp CREATE TRIGGER để tạo ra trigger trong SQL cơ bản:

CREATE TRIGGER tên_trigger ON Tên_bảng [ WITH > INSTEAD OF [INSERT>, [UPDATE> , [DELETE>

Các lớp Trigger trong Squốc lộ Server

Có nhì lớp trigger trong SQL Server:

Trong khi, DML trigger còn có những loại không giống nhau:

FOR hoặc AFTER <: Các các loại trigger này được triển khai sau khi câu lệnh kích hoạt dứt.INSTEAD OF : Trái ngược cùng với FOR (AFTER), trigger INSTEAD OF triển khai nỗ lực do cố cho câu lệnh kích hoạt. Nói cách khác, một số loại trigger này sửa chữa thay thế câu lệnh kích hoạt. Vấn đề này vô cùng có ích trong ngôi trường đúng theo bạn cần phải có tính trọn vẹn tsay mê chiếu database chéo cánh.

Tầm đặc biệt của Trigger vào SQL Server

giữa những điểm sáng cơ bạn dạng của relational databases là tính đồng nhất dữ liệu. Điều này Có nghĩa là thông báo được lưu trữ vào database luôn luôn nhất quán cho phần đa session cùng những transaction. Cách những chế độ relational database nhỏng Squốc lộ hệ thống triển khai vấn đề đó bằng cách thực thi ràng buộc các primary key cùng foreign key.

Trong SQL Server không tồn tại thời cơ triển khai tính toàn diện tham chiếu giữa nhì bảng bởi foreign key nếu như các bảng đó phía bên trong database khác nhau hoặc server khác nhau. Trong trường hòa hợp này, bí quyết nhất nhằm triển khai là áp dụng trigger trong SQL Server.

Xem thêm: Tỷ Giá Đồng Yên Và Vnd ) - Tỷ Giá Chuyển Đổi Yên Nhật Sang Đồng Việt Nam

Ưu điểm và nhược điểm của Trigger

Thực tế là việc coi trigger vào Squốc lộ nlỗi các stored procedure thì sẽ sở hữu ưu thế với yếu điểm. Trigger trong SQL Server cung cấp mang đến bọn họ kỹ năng thực hiện hồ hết Việc chẳng thể triển khai vì stored procedure.

Ưu điểm của Trigger

Trigger trong Squốc lộ rất đơn giản nhằm viết code. Thực tế là chúng được mã hóa giống hệt như những stored procedure. Điều này góp câu hỏi bắt đầu cùng với những trigger trsống yêu cầu dễ dãi rộng rất nhiều.Trigger chất nhận được chúng ta chế tạo ra audit cơ bạn dạng. Bằng giải pháp áp dụng bảng vẫn xóa bên phía trong một trigger. Quý Khách hoàn toàn có thể xây cất một giải pháp kiểm tra tương xứng để chèn ngôn từ của tài liệu bảng vẫn xóa vào trong 1 bảng bình chọn cất giữ dữ liệu hiện giờ đang bị xóa bởi câu lệnh DELETE hoặc được chuyển đổi vì câu lệnh UPDATE.Bạn có thể Gọi những store procedure với hàm được lưu trữ phía bên trong trigger.Trigger vào SQL bổ ích khi bạn bắt buộc đảm bảo dữ liệu được Insert hoặc update theo batch vậy bởi vì từng mặt hàng. Quý khách hàng có thể thực hiện trigger vào SQL Server để quản lý tính toàn vẹn ttê mê chiếu trên database. Trigger vào SQL rất có ích nếu như bạn bắt buộc bảo vệ rằng những sự khiếu nại luôn luôn xẩy ra lúc dữ liệu được insert, update hoặc delete. Quý Khách rất có thể sử dụng code phía bên ngoài làm cho trigger bằng phương pháp sử dụng CLR trigger. Loại trigger này chỉ định cách thức của một đúng theo ngữ được viết bằng .NET nhằm links cùng với trigger.Các trigger rất có thể được lồng vào nhau mang đến 32 cấp độ. Một trigger được xem như là lồng vào nhau Khi nó triển khai một vận động kích hoạt một trigger không giống.

Nhược điểm của SQL Server Trigger

lúc bạn áp dụng BULK INSERT nhằm chèn tài liệu vào table, trigger sẽ không còn được kích hoạt trừ khi ban bao hàm tùy chọn FIRE_TRIGGERS vào hàng loạt câu lệnh Insert của chính bản thân mình. Vấn đề này vô cùng đặc trưng, bởi vì nếu như khách hàng bao gồm trigger bên trên một table với bạn thực hiện một loạt thao tác Insert mà lại ko bao hàm tùy lựa chọn FIRE_TRIGGERS, các bạn sẽ mất đi tính đồng nhất của dữ liệu.Rất cạnh tranh xác định những trigger trừ khi bạn tài năng liệu phù hợp. Vì bọn chúng cần yếu nhận thấy so với client. Mỗi khi chúng ta chạy một câu lệnh DML bao gồm một trigger được liên kết với nó, chúng ta thực thụ đã xúc tiến câu lệnh DML cùng trigger. Nhưng theo khái niệm, câu lệnh DML sẽ không chấm dứt cho đến khi quá trình tiến hành trigger hoàn tất. Như vậy rất có thể tạo nên một tồi tệ vào cấp dưỡng.Vấn đề của Việc áp dụng trigger trong SQL đến mục tiêu kiểm soát là khi trigger được bật. Chúng luôn luôn tiến hành bất kỳ ngôi trường hợp nào khiến trigger kích hoạt. Nếu có nhiều trigger lồng nhau, hoàn toàn có thể siêu cực nhọc gỡ lỗi và khắc phục và hạn chế sự vậy. Vấn đề này làm tiêu hao thời gian với tài nguyên ổn nhằm cách tân và phát triển.Nếu các bạn sử dụng trigger trong SQL nhằm thực thích hợp tính toàn vẹn của tđam mê chiếu, các bạn cần lưu ý rằng trigger trong Squốc lộ hoàn toàn có thể bị vô hiệu hóa vì chưng người dùng bao gồm quyền AFTER trên bảng hoặc cơ chế xem khu vực trigger được tạo thành. Để tách điều này, chúng ta cũng có thể đề xuất chu đáo các quyền của người dùng.Để CLR trigger vận động, bạn đề nghị kích hoạt tùy lựa chọn VPS “clr enabled” bằng phương pháp sử dụng quy trình tàng trữ khối hệ thống sp_configure. Việc cho phép code CLR chạy vào phiên bạn dạng database ẩn chứa hiểm họa bảo mật. Vì người dùng độc hại hoàn toàn có thể thêm các nhiều CLR vào database và tiếp đến chỉ chiếm quyền điều hành và kiểm soát hệ thống.

lấy ví dụ về Trigger trong SQL

lấy ví dụ về trình kích hoạt trigger Khi sử dụng production.products


*

Tạo bảng ghi

Câu lệnh CREATE TABLE chọn cái tên production.product_audits nhằm lưu lại một vài đọc tin Khi INSERT hoặc DELETE xẩy ra sự kiện với table = 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. Dường như, nó tất cả thêm một vài cột nhằm ghi lại rất nhiều đổi khác, ví như updated_at, operation và change_id.

Tạo DML Trigger

Trước tiên, nhằm tạo nên trigger mới, chỉ định tên trigger cùng schema tất cả vào đề bài bác.

Xem thêm: Sự Nguy Hiểm Của Bụi Mịn Pm 2.5 Là Gì, Tìm Hiểu Bụi Mịn Pm 1

CREATE TRIGGER production.trg_product_auditTiếp theo, chỉ đinc thương hiệu table mà lại trigger đã kích hoạt khi 1 sự kiện xảy ra:

ON production.productsSau đó, các bạn liệt kê một hoặc các sự kiện đã Điện thoại tư vấn trigger trong lênh AFTER

AFTER INSERT, DELETENội dung của trigger ban đầu với tự khóa AS

ASBEGINBên vào trigger, các bạn tùy chỉnh thiết lập SET NOCOUNT nhằm ON nhằm ngăn ngừa số lượng mặt hàng được trả lại lúc trigger bị hình họa hưởng

SET NOCOUNT ON;Trigger sẽ cnhát một cột vào table production.product_audits bất kể bao giờ một row được insert hoặc delete khỏi bảng production.products. Dữ liệu cung ứng nhằm cnhát tự các bảng INSERTED cùng DELETED thông qua UNION ALL.

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 ALL SELECT d.product_id, product_name, brand_id, category_id, model_year, d.list_price, getdate(), "DEL" FROM deleted AS d;Sâu phía trên, chúng ta gộp những phần lại cùng với nhau

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, bạn triển khai toàn thể câu lệnh nhằm tạo ra trigger. Sau khi trigger được chế tạo, bạn có thể tìm kiếm thấy nó vào folder trigger như hình bên dưới đây:


*
Tìm trigger sau thời điểm sản xuất vào thỏng mục

Kiểm tra trigger

Ckém câu lệnh sau vào 1 sản phẩm bắt đầu trong 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);Xem xét ngôn từ của bảng production.product_audits

SELECT * FROM production.product_audits;Và đấy là kết quả:

*
Kết trái sau khi kiêm tra

Câu lệnh xóa một mặt hàng vào bảng production.products

DELETE FROM production.productsWHERE product_id = 322;Và trigger đã có kích hoạt cùng ckém vào sản phẩm đã xóa trong bảng production.product_audits:

SELECT * FROM production.product_audits;Kết trái được xuất ra:

*

Bằng cách này, Trigger vào SQL đã có được tạo thành cùng tiến hành trong cửa hàng dữ liệu.

Lời kết

Bài viết này giúp cho bạn hiểu rõ hơn về trigger trong SQL với cách tạo thành trigger. Việc áp dụng trigger không yêu cầu cùng nó vẫn được sử dụng với nhiều mục tiêu riêng. Chúc chúng ta thành công.