Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận Giá trị CŨ trong MySQL Trigger SAU KHI Cập nhật Tuyên bố

Trong một UPDATE TRIGGER , bạn có thể sử dụng OLD từ khóa để truy cập dữ liệu hàng đang được thay thế bởi bản cập nhật. NEW từ khóa cho phép truy cập dữ liệu hàng đến sẽ thay thế hàng cũ, nếu thành công.

Ví dụ về UPDATE kích hoạt là:

CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
    FOR EACH ROW
    BEGIN
       IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
         INSERT INTO AuditSomeTable(ID, LastChangedBy) 
         VALUES (OLD.ID, OLD.LastChangedBy);
       END IF;
    END;

SQLFiddle đây

Tùy thuộc vào loại trình kích hoạt được tạo, OLDNEW các hàng có thể không có sẵn cho bạn:

CHÈN TRIGGER

  • Truy cập vào NEW chỉ hàng giả.

CẬP NHẬT TRIGGER

  • Truy cập vào NEWOLD hàng giả

XÓA TRIGGER

  • Chỉ truy cập vào OLD hàng giả

tức là không có OLD hàng trên một INSERT kích hoạt và không có NEW hàng trên DELETE kích hoạt.

Câu hỏi của OP

OP đã không cung cấp mã thực và thông báo lỗi được đề cập trong các nhận xét:

chỉ ra rằng OP đã vô tình tạo một INSERT TRIGGER và không phải là UPDATE TRIGGER như đã được chỉ ra trong câu hỏi. INSERT trình kích hoạt không có OLD bảng giả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tắt xác thực mật khẩu mysql?

  2. Hiểu biết / mySQL hay còn gọi là lừa các mối quan hệ ForeignKey trong Django

  3. LỖI:Kết nối đang ở chế độ Tự động gửi

  4. Chọn nhiều bảng so với THAM GIA (hiệu suất)

  5. Mysql:Đặt bộ ký tự cột