TRIGGER TRONG SQL LÀ GÌ

     

Trigger là thủ tục SQL được tiến hành ở phía máy chủ khi có bất kỳ sự kiện nào xẩy ra như Insert, Update giỏi Delete.

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


Trigger là thuật ngữ hay được áp dụng trong SQL. Vì vậy những ai đang sẵn có ý định học tập về ngôn ngữ truy vấn tài liệu thì đừng quăng quật qua các kiến thức Trigger trong SQL của bài share sau phía trên nhé.


Khái niệm Trigger vào SQL là gì?

Trigger là giấy tờ thủ tục SQL được triển khai ở phía máy chủ khi có ngẫu nhiên sự khiếu nại nào xảy ra như Insert, Update giỏi Delete. Không tính ra, Trigger còn được hiểu là 1 trong stored procedure dạng quan trọng (vì nó không có tham số) được thực thi tự động ngay khi gồm sự khiếu nại làm tài liệu bị vậy đổi. Server DB là chỗ lưu trữ, cai quản Trigger, cùng được áp dụng khi người dùng muốn chất vấn sự ràng buộc toàn vẹn của DB.

Ba điểm lưu ý tạo nên sự khác hoàn toàn giữa Trigger và stored procedures:

Trigger được triển khai tự động. Trigger ko có cơ hội nhận thông số.

Người cần sử dụng không thể cam kết, tuyệt khôi phục bất kỳ transaction nào trong Trigger. 

Tuy nhiên, câu hỏi không dùng tham số bên trên Trigger không là một trong những hạn chế của quy trình nhận tin tức sự kiện, và người dùng hoàn toàn có không ít lựa chọn khác giao hàng cho hoạt động lấy thông tin từ sự kiện.

*

Trường hợp áp dụng Trigger vào SQL Server 

Trigger vào SQL được sử dụng trong số trường phù hợp sau:

soát sổ tính ràng buộc của rất nhiều quan hệ giữa các bảng hoặc các dòng của bảng. Ngăn chặn làm việc xóa những dữ liệu quan lại trọng. Tận dụng Trigger để sở hữu các hàm chạy ngầm, giao hàng cho một vài trường hợp rõ ràng của tín đồ dùng.

Cú pháp chế tạo Trigger trong SQL cơ bản

Dưới đây là đoạn code sản xuất Trigger cơ bản: 

CREATE TRIGGER tên_trigger

ON Tên_bảng

< WITH >

INSTEAD OF

, ,

Cấu chế tạo ra Trigger trong SQL Server

Trigger vào SQL tất cả 2 lớp, gồm:

DDL (Data Definition Language) Trigger: Là lớp có khả năng kích hoạt khi cấu tạo sự kiện bị thay đổi (như chế tác mới, chỉnh sửa, sa thải bảng), hoặc sự kiện tương quan đến máy chủ (cập nhật thống kê, biến đổi bảo mật). DML (Data Modification Language) Trigger: các loại này được dùng nhiều nhất. Đối cùng với DML Trigger, sự kiện kích hoạt chỉ với câu lệnh sửa đổi dữ liệu (chèn, cập nhật, xóa) trên bảng.

Bên cạnh đó, DML Trigger cũng đều có một số các loại khác như: 

- FOR, AFTER : các Trigger này sẽ được thực thi khi hoàn thành câu lệnh kích hoạt. 

INSTEAD OF : trái lại với Trigger FOR (AFTER), Trigger này được sử dụng để xúc tiến lệnh kích hoạt. Điều này còn có nghĩa, nó được dùng thay đến câu lệnh kích hoạt. Nhiều loại Trigger này cực kì quan trọng và hữu ích. Bởi vì nó giúp fan dùng có thể tham chiếu chéo cánh toàn vẹn đến những dữ liệu. 
*

Vai trò của Trigger vào SQL hệ thống là gì?

Mối quan hệ giới tính của tài liệu (relational databases) có điểm lưu ý cơ phiên bản là tính tuyệt nhất quán. Điều này được phát âm là tất cả thông tin lưu trữ trong database phải đồng hóa với các session, transaction. Vì thế, để tiến hành tính đồng bộ này, SQL hệ thống phải thực hiện sự buộc ràng giữa những primary key và foreign key.

Xem thêm: Vì Sao Vết Thương Bị Ngứa Phải Làm Sao Vết Thương Bị Ngứa Khi Mọc Da Non?

Ngoài ra, vào SQL Server, khi 2 bảng nằm trên 2 database hoặc sản phẩm chủ khác nhau thì việc thực thi tính toàn vẹn tham chiếu thân chúng bởi foreign key sẽ không thể tiến hành được. Vị đó, so với tình huống này chỉ có giải pháp duy duy nhất là dùng Trigger vào SQL Server

Ưu điểm của Trigger trong SQL

thuận tiện viết code. Vị về bạn dạng chất, bọn chúng đã được mã hóa như stored procedure. Dựa vào thế, thừa trình ban đầu làm vấn đề với Trigger trở đề nghị thuận lợi, dễ dàng và nhanh chóng hơn.  cho phép người dùng hoàn toàn có thể tạo phân tích và đo lường cơ bạn dạng thông qua việc thực hiện bảng tài liệu đã xóa vào Trigger. Bằng phương pháp tận dụng bảng này chèn vào bảng kiểm tra, bạn sẽ dễ dàng xây dựng chiến thuật đánh giá phù hợp. Hỗ trợ người dùng gọi các store procedure, hàm tàng trữ trong một Trigger. Tạo Trigger trong SQL Server trở cần hữu ích khi người dùng xác thực các dữ liệu cấp dưỡng hoặc cập nhật theo batch. Được sử dụng để xúc tiến tính trọn vẹn tham chiếu dữ liệu. Vào trường hợp những sự kiện xẩy ra khi gồm sự kiểm soát và điều chỉnh dữ liệu như thêm vào, update hoặc xóa thì mục đích của Trigger cực kỳ hữu ích. Thông qua CLR Trigger, người tiêu dùng được phép làm cho Trigger bằng cách tận dụng code bên ngoài. Đây là nhiều loại Trigger chỉ định cách làm hợp ngữ viết bằng .NET liên kết với Trigger. Tất cả tới 32 cấp độ lồng vào nhau của các Trigger. Vào đó, một Trigger được xem như là lồng vào nhau khi thực hiện hành vi kích hoạt Trigger khác. áp dụng Trigger để sửa chữa thay thế các các bước hẹn giờ theo lịch.

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

Trigger nhập vai trò là 1 phần của quy trình kiểm tra tính vừa lòng lệ dữ liệu. Nó không thay thế cho toàn bộ vận động này.  Chỉ vận động ngầm vào cơ sở dữ liệu và không hiển thị làm việc giao diện đề xuất khó chỉ ra các vấn đề xảy ra tại tầng cơ sở dữ liệu. Buổi giao lưu của Trigger là cập nhật lên bảng dữ liệu nên làm cho tăng khối lượng quá trình cho cơ sở dữ liệu. Bởi thế, khối hệ thống sẽ quản lý chậm hơn.
*

Bài tập về Trigger trong SQL

Để hiểu hơn về Trigger, chúng ta cũng có thể tham khảo lấy ví dụ như sau:

Giả sử, các bạn có bảng employees như hình minh họa mặt dưới.

*

Bây giờ, chúng ta tạo một Trigger có tác dụng lưu giữ kế hoạch sử update của mỗi nhân viên. Để thực hiện, bạn làm theo công việc hướng dẫn sau:

Bước 1: bạn phải tạo một bảng employee mới, khắc tên là employee_edit bởi lệnh như sau.

CREATE TABLE employees_audit (

id INT AUTO_INCREMENT PRIMARY KEY,

employeeNumber INT NOT NULL,

lastname VARCHAR(50) NOT NULL,

changedat DATETIME mặc định NULL,

action VARCHAR(50) default NULL

);

Bước 2: bạn viết Trigger thực hiện công dụng lưu trữ các đổi khác của employees. Câu lệnh lúc này là:

DELIMITER $$

CREATE TRIGGER before_employee_update 

BEFORE UPDATE ON employees

FOR EACH ROW 

BEGIN

INSERT INTO employees_edit

SET action = "update",

employeeNumber = OLD.employeeNumber,

lastname = OLD.lastname,

changedat = NOW(); 

END$$

DELIMITER ;

Trong thân câu lệnh trên, bạn dùng từ bỏ khóa OLD để có thể truy cập tin tức dữ liệu của mặt hàng trong cột employeeNumber với lastname bị Trigger gây ảnh hưởng. 

Lưu ý: 

vào trường hợp chế tạo Trigger đến thêm dữ liệu (Insert), bạn áp dụng từ khóa NEW. Đối với ngôi trường hợp chế tạo Trigger nhằm xóa dữ liệu, bạn thực hiện từ khóa OLD. Đối với Trigger mang lại việc update dữ liệu thì bạn thực hiện từ khóa OLD mang lại hàng trước lúc cập nhật, tự khóa NEW cho hàng sau thời điểm cập nhật.  Để xem toàn cục Trigger trong các đại lý dữ liệu, chúng ta dùng hàm SHOW TRIGGERS;

Bước 3: triển khai cập nhập bảng employees cùng với cú pháp câu lệnh sau.

Xem thêm: Cách Thanh Toán Tiền Điện Qua Momo Cực Nhanh Chóng, Thanh Toán Tiền Điện Online

UPDATE employees 

SET 

lastName = "Phan"

WHERE

employeeNumber = 1056;

Nếu mong kiểm tra TRIGGER được tiến hành chưa, bạn sử dụng câu lệnh bên dưới để tầm nã vấn nằm trong bảng employees_edit:

SELECT * FROM employees_edit;

Lúc này, kết quả truy vấn trả về như hình sau:

*

Như vậy, Trigger đã làm được thực hiện, đồng thời nó đã tiến hành chèn một bảng ghi bắt đầu trong bảng employees_edit.

Xóa Trigger vào SQL

Cú pháp DROP TRIGGER là câu lệnh xóa Trigger vào SQL khỏi cửa hàng dữ liệu. Đối với Trigger DML, câu lệnh bao gồm dạng minh họa như sau: 

DROP TRIGGER < IF EXISTS > trigger_name < ,...n >;

Trong đó:

IF EXISTS: Là xóa Trigger vẫn tồn tại. Schema_name: tên của lượt đồ bao gồm chứa Trigger DML. Trigger_name: thương hiệu của Trigger đề xuất xóa.

Khi mong muốn xóa các Trigger thuộc lúc, bạn sử dụng dấu “,” nhằm phân bóc tách Trigger. 

Đối cùng với Trigger DDL, nhằm xóa một hay các Trigger, chúng ta dùng câu lệnh DROP TRIGGER sau:

DROP TRIGGER < IF EXISTS > trigger_name < ,...n >

ON DATABASE ;

Trong đó:

DATABASE: Là phạm vi trigger DDL trong đại lý dữ liệu. ALL SERVER: Là phạm vi áp dụng của Trigger DDL mang đến máy chủ.

Đối với xóa Trigger của sự kiện LOGON, các bạn dùng câu lệnh mặt dưới: 

DROP TRIGGER < IF EXISTS > trigger_name < ,...n >

ON ALL SERVER;

Lưu ý: 

Khi bạn xóa bất cam kết bảng làm sao thì toàn thể Trigger trong SQL có link với bảng sẽ tự động hóa xóa theo.