phpMyAdmin
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> phpMyAdmin

Không thể tạo một TRIGGER từ bên trong một quy trình được lưu trữ khác - Một quy trình được lưu trữ khác là gì?

Trình kích hoạt bạn hiển thị ở trên là tốt.

chỉnh sửa: Khi bạn tạo trình kích hoạt trong GUI của phpMyAdmin, bạn chỉ cần nhập nội dung của trình kích hoạt trong Định nghĩa , nói cách khác là phần BEGIN...END .

Điều này là do phpMyAdmin sẽ cố gắng thông minh và viết tiêu đề trình kích hoạt cho bạn dựa trên các yếu tố khác mà bạn nhập (tên, bảng, thời gian, sự kiện).

Đây là cách phù hợp để xác định trình kích hoạt trong phpMyAdmin:

Nếu bạn viết CREATE TRIGGER... header bên trong phần thân, nó sẽ gây nhầm lẫn cho MySQL vì nó sẽ thấy CREATE TRIGGER... CREATE TRIGGER... BEGIN...END . Điều này làm cho MySQL nghĩ rằng bạn đang xác định một trình kích hoạt có câu lệnh đầu tiên là CREATE TRIGGER .

Là một vấn đề phụ so với câu hỏi ban đầu của bạn, tôi đề xuất một số thay đổi trong phần nội dung của trình kích hoạt:

CREATE TRIGGER Update_Last_Transit_Status AFTER INSERT ON Delivery 
FOR EACH ROW
BEGIN
  UPDATE Transportation
    INNER JOIN Transit ON Transit.Transportation_ID = Transportation.ID
    INNER JOIN Route ON Transit.ID = Route.Transit_ID
  SET Transportation.Status = 'Dispatched'
  WHERE Route.Delivery_ID = NEW.ID
    AND Transportation.Status = 'In Branch';
END

Những thay đổi:

  • Tham chiếu NEW.ID thay vì Delivery.ID .
  • Sử dụng SQL-92 JOIN cú pháp thay vì tham gia "kiểu dấu phẩy" trong SQL-89.
  • Sử dụng nhiều bảng UPDATE với các phép nối, thay vì EXISTS với truy vấn con tương quan.
  • Sử dụng dấu ngoặc đơn cho chuỗi thay vì dấu ngoặc kép.
  • Chấm dứt UPDATE câu lệnh có dấu chấm phẩy.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. phpMyAdmin không hiển thị các cột đã thêm

  2. Cách nhập nhiều tệp csv vào Cơ sở dữ liệu MySQL

  3. phpmyadmin:tạo một hàm

  4. Thiết lập nhiều cơ sở dữ liệu MySQL

  5. Hộp cảnh báo PHPMyAdmin - thiếu giá trị trong biểu mẫu - tất cả các trường thông thường được điền?