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

Nhận chuỗi truy vấn MySQL đầy đủ khi chèn hoặc cập nhật

Bạn có thể nhận truy vấn SQL hiện tại dưới dạng một chuỗi với câu lệnh sau:

SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()

Vì vậy, những gì bạn phải làm là tạo một TRIGGER chạy trên các thao tác chèn và / hoặc cập nhật trên bảng của bạn nên (i) lấy câu lệnh sql hiện tại và (ii) chèn nó vào một bảng khác, như vậy:

DELIMITER |

CREATE TRIGGER log_queries_insert BEFORE INSERT ON `your_table`
FOR EACH ROW
BEGIN
    DECLARE original_query VARCHAR(1024);
    SET original_query = (SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID());
    INSERT INTO `app_sql_debug_log`(`query`) VALUES (original_query);
END;
|
DELIMITER ;

Bạn sẽ phải tạo hai trình kích hoạt - một để cập nhật và một để chèn. Trình kích hoạt sẽ chèn truy vấn mới dưới dạng chuỗi trong app_sql_debug_log trong query cột.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có bao nhiêu truy vấn là quá nhiều?

  2. Nhân bản, sao chép hoặc sao lưu bảng trong MySQL, MariaDB, Oracle, PostgreSQL, DB2 và SQLite với Tạo bảng dưới dạng SQL

  3. PHP MySql:Print Tree - Parent Child Checkbox

  4. Làm thế nào để chuyển một danh sách các ID vào thủ tục lưu trữ MySQL?

  5. mysql_fetch_array không truy xuất tất cả các hàng