sql >> データベース >  >> RDS >> Mysql

挿入または更新時に完全なMySQLクエリ文字列を取得する

    次のステートメントを使用して、現在のSQLクエリを文字列として取得できます。

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

    したがって、あなたがしなければならないのは、TRIGGERを作成することです。 これは、テーブルの挿入および/または更新操作で実行されます。(i) 現在のSQLステートメントと(ii)を取得します 次のように、別のテーブルに挿入します:

    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 ;
    

    2つのトリガーを作成する必要があります。1つは更新用、もう1つは挿入用です。トリガーは、新しいクエリを文字列として app_sql_debug_logに挿入します queryのテーブル 列。



    1. Oracleで休止状態:StringプロパティをCLOB列にマッピング

    2. COPYはどのように機能し、なぜINSERTよりもはるかに高速なのですか?

    3. MySQLの自動インクリメントフィールドを使用して行をコピーし、同じテーブルに挿入するにはどうすればよいですか?

    4. MySQLエラー2006:mysqlサーバーがなくなりました