Nếu KHÁC kích hoạt MySQL

Tuyên bố này tạo ra một trình kích hoạt mới. Trình kích hoạt là một đối tượng cơ sở dữ liệu có tên được liên kết với một bảng và được kích hoạt khi một sự kiện cụ thể xảy ra đối với bảng. Trình kích hoạt được liên kết với bảng có tên tbl_name, bảng này phải tham chiếu đến một bảng cố định. Bạn không thể liên kết trình kích hoạt với bảng TEMPORARY hoặc chế độ xem

Tên trình kích hoạt tồn tại trong không gian tên lược đồ, nghĩa là tất cả trình kích hoạt phải có tên duy nhất trong một lược đồ. Trình kích hoạt trong các lược đồ khác nhau có thể có cùng tên

IF NOT EXISTS ngăn lỗi xảy ra nếu một trình kích hoạt có cùng tên, trên cùng một bảng, tồn tại trong cùng một sơ đồ. Tùy chọn này được hỗ trợ với CREATE TRIGGER bắt đầu với MySQL 8. 0. 29

Phần này mô tả cú pháp CREATE TRIGGER. Để thảo luận thêm, hãy xem Phần 25. 3. 1, “Cú pháp kích hoạt và ví dụ”

CREATE TRIGGER yêu cầu đặc quyền cho bảng được liên kết với trình kích hoạt. Nếu có mệnh đề DEFINER, thì các đặc quyền được yêu cầu tùy thuộc vào giá trị user, như đã thảo luận trong Phần 25. 6, “Kiểm soát truy cập đối tượng được lưu trữ”. Nếu tính năng ghi nhật ký nhị phân được bật, thì CREATE TRIGGER có thể yêu cầu đặc quyền, như đã thảo luận trong Phần 25. 7, “Ghi nhật ký nhị phân chương trình được lưu trữ”

Mệnh đề DEFINER xác định ngữ cảnh bảo mật sẽ được sử dụng khi kiểm tra các đặc quyền truy cập tại thời điểm kích hoạt trình kích hoạt, như được mô tả sau trong phần này

tbl_name3 là thời gian hành động kích hoạt. Nó có thể là tbl_name4 hoặc tbl_name5 để chỉ ra rằng trình kích hoạt kích hoạt trước hoặc sau mỗi hàng được sửa đổi

Kiểm tra giá trị cột cơ bản diễn ra trước khi kích hoạt trình kích hoạt, vì vậy bạn không thể sử dụng trình kích hoạt tbl_name4 để chuyển đổi giá trị không phù hợp với loại cột thành giá trị hợp lệ

tbl_name7 cho biết loại hoạt động kích hoạt trình kích hoạt. Các giá trị tbl_name7 này được cho phép

  • tbl_name9. Trình kích hoạt kích hoạt bất cứ khi nào một hàng mới được chèn vào bảng (ví dụ: thông qua các câu lệnh tbl_name9, TEMPORARY1 và TEMPORARY2)

  • TEMPORARY3. Trình kích hoạt kích hoạt bất cứ khi nào một hàng được sửa đổi (ví dụ: thông qua câu lệnh TEMPORARY3)

  • TEMPORARY5. Trình kích hoạt kích hoạt bất cứ khi nào một hàng bị xóa khỏi bảng (ví dụ: thông qua các câu lệnh TEMPORARY5 và TEMPORARY2). Câu lệnh TEMPORARY8 và TEMPORARY9 trên bàn không kích hoạt trình kích hoạt này, bởi vì chúng không sử dụng TEMPORARY5. Bỏ một phân vùng cũng không kích hoạt trình kích hoạt TEMPORARY5

tbl_name7 không đại diện cho một loại câu lệnh SQL kích hoạt trình kích hoạt nhiều như nó đại diện cho một loại hoạt động của bảng. Ví dụ: trình kích hoạt tbl_name9 kích hoạt không chỉ cho câu lệnh tbl_name9 mà còn cho câu lệnh TEMPORARY1 vì cả hai câu lệnh đều chèn hàng vào bảng

Một ví dụ có khả năng gây nhầm lẫn về điều này là cú pháp IF NOT EXISTS6. trình kích hoạt IF NOT EXISTS7 kích hoạt cho mỗi hàng, theo sau là trình kích hoạt IF NOT EXISTS8 hoặc cả trình kích hoạt IF NOT EXISTS9 và CREATE TRIGGER0, tùy thuộc vào việc có khóa trùng lặp cho hàng hay không

Hành động khóa ngoại xếp tầng không kích hoạt trình kích hoạt

Có thể xác định nhiều trình kích hoạt cho một bảng nhất định có cùng sự kiện kích hoạt và thời gian hành động. Ví dụ: bạn có thể có hai trình kích hoạt IF NOT EXISTS9 cho một bảng. Theo mặc định, các trình kích hoạt có cùng sự kiện kích hoạt và thời gian hành động sẽ kích hoạt theo thứ tự chúng được tạo. Để tác động đến thứ tự kích hoạt, hãy chỉ định mệnh đề CREATE TRIGGER2 cho biết CREATE TRIGGER3 hoặc CREATE TRIGGER4 và tên của trình kích hoạt hiện có cũng có cùng sự kiện kích hoạt và thời gian hành động. Với CREATE TRIGGER3, trình kích hoạt mới sẽ kích hoạt sau trình kích hoạt hiện có. Với CREATE TRIGGER4, trình kích hoạt mới kích hoạt trước trình kích hoạt hiện có

CREATE TRIGGER7 là câu lệnh sẽ thực thi khi trigger kích hoạt. Để thực thi nhiều câu lệnh, hãy sử dụng cấu trúc câu lệnh ghép CREATE TRIGGER8. Điều này cũng cho phép bạn sử dụng các câu lệnh tương tự được phép trong các thói quen được lưu trữ. Xem Phần 13. 6. 1, “BẮT ĐẦU. KẾT THÚC Câu lệnh ghép”. Một số câu lệnh không được phép trong trình kích hoạt; . 8, “Hạn chế đối với các chương trình được lưu trữ”

Trong nội dung trình kích hoạt, bạn có thể tham chiếu đến các cột trong bảng chủ đề (bảng được liên kết với trình kích hoạt) bằng cách sử dụng bí danh CREATE TRIGGER9 và CREATE TRIGGER0. CREATE TRIGGER1 đề cập đến một cột của một hàng hiện có trước khi nó được cập nhật hoặc xóa. CREATE TRIGGER2 đề cập đến cột của một hàng mới được chèn hoặc một hàng hiện có sau khi nó được cập nhật

Trình kích hoạt không thể sử dụng CREATE TRIGGER2 hoặc sử dụng CREATE TRIGGER1 để chỉ các cột được tạo. Để biết thông tin về các cột được tạo, hãy xem Phần 13. 1. 20. 8, “TẠO BẢNG và Cột được tạo”

MySQL lưu cài đặt biến hệ thống có hiệu lực khi trình kích hoạt được tạo và luôn thực thi phần thân trình kích hoạt với cài đặt này có hiệu lực, bất kể chế độ SQL của máy chủ hiện tại khi trình kích hoạt bắt đầu thực thi

Mệnh đề DEFINER chỉ định tài khoản MySQL sẽ được sử dụng khi kiểm tra các đặc quyền truy cập tại thời điểm kích hoạt trình kích hoạt. Nếu có mệnh đề DEFINER, thì giá trị user phải là tài khoản MySQL được chỉ định là CREATE TRIGGER9'@'CREATE TRIGGER0', hoặc. Các giá trị user được phép tùy thuộc vào các đặc quyền mà bạn nắm giữ, như đã thảo luận trong Phần 25. 6, “Kiểm soát truy cập đối tượng được lưu trữ”. Cũng xem phần đó để biết thêm thông tin về bảo mật trình kích hoạt

Nếu mệnh đề DEFINER bị bỏ qua, định nghĩa mặc định là người dùng thực thi câu lệnh CREATE TRIGGER. Điều này giống như chỉ định rõ ràng CREATE TRIGGER6

MySQL đưa người dùng DEFINER vào tài khoản khi kiểm tra các đặc quyền kích hoạt như sau

  • Vào thời điểm CREATE TRIGGER, người dùng đưa ra tuyên bố phải có đặc quyền

  • Tại thời điểm kích hoạt trình kích hoạt, các đặc quyền được kiểm tra đối với người dùng DEFINER. Người dùng này phải có những đặc quyền này

    • Đặc quyền cho bảng chủ đề

    • Đặc quyền cho bảng chủ đề nếu tham chiếu đến các cột của bảng xảy ra bằng cách sử dụng CREATE TRIGGER1 hoặc CREATE TRIGGER2 trong phần thân trình kích hoạt

    • Đặc quyền cho bảng chủ đề nếu các cột trong bảng là mục tiêu của các nhiệm vụ của TRIGGER6 = TRIGGER7 trong phần thân trình kích hoạt

    • Bất kỳ đặc quyền nào khác thường được yêu cầu đối với các câu lệnh được trình kích hoạt thực hiện

Trong phần thân trình kích hoạt, hàm trả về tài khoản được sử dụng để kiểm tra các đặc quyền tại thời điểm kích hoạt trình kích hoạt. Đây là người dùng DEFINER, không phải người dùng có hành động khiến trình kích hoạt được kích hoạt. Để biết thông tin về kiểm tra người dùng trong trình kích hoạt, hãy xem Phần 6. 2. 23, “Kiểm tra hoạt động tài khoản dựa trên SQL”

Nếu bạn sử dụng DEFINER0 để khóa một bảng có trình kích hoạt, các bảng được sử dụng trong trình kích hoạt cũng bị khóa, như được mô tả trong

Chúng ta có thể sử dụng if other trong truy vấn MySQL không?

Câu lệnh IF-THEN-ELSE của MySQL . you can use IF-THEN-ELSE .

Làm thế nào để sử dụng nếu điều kiện trong MySQL?

Hàm IF() của MySQL .
Trả về "YES" nếu điều kiện là TRUE, hoặc "NO" nếu điều kiện là FALSE. .
Trả về 5 nếu điều kiện là TRUE, hoặc 10 nếu điều kiện là FALSE. .
Kiểm tra xem hai chuỗi có giống nhau không và trả về "CÓ" nếu đúng hoặc "KHÔNG" nếu không

Làm cách nào để kiểm tra điều kiện trong trình kích hoạt trong SQL?

Điều kiện WHEN có thể được sử dụng trong trình kích hoạt SQL để chỉ định điều kiện. Nếu điều kiện được đánh giá là đúng, thì các câu lệnh SQL trong phần thân quy trình kích hoạt SQL sẽ được chạy . Nếu điều kiện được đánh giá là sai, các câu lệnh SQL trong phần thân quy trình kích hoạt SQL sẽ không chạy và quyền điều khiển được trả về hệ thống cơ sở dữ liệu.

Làm cách nào để đặt trình kích hoạt trong MySQL?

Để tạo hoặc loại bỏ trình kích hoạt, hãy sử dụng câu lệnh CREATE TRIGGER hoặc DROP TRIGGER , được mô tả trong Phần 13. 1. 22, “TẠO Câu lệnh KÍCH HOẠT” và Phần 13. 1. 34, “Tuyên bố DROP TRIGGER”. Đây là một ví dụ đơn giản liên kết một trình kích hoạt với một bảng, để kích hoạt cho các thao tác INSERT.