バイナリ ログにデータを書き込まずに、トリガーまたはストアド プロシージャを介してテーブルに行を挿入しようとしています。これは可能ですか?通常の接続SQL_LOG_BIN=0
では、接続のバイナリログを無効にするように設定できることは知っていますが、トリガーに対してそれを機能させることができませんでした。フェデレーテッド・エンジン・テーブルでこれを行う方法があれば、それも問題ありません。
編集:
ストアドプロシージャを介してこれをほぼ達成できます:
CREATE PROCEDURE nolog_insert(`id` INT, `data` blob)
BEGIN
SET SESSION SQL_LOG_BIN = 0;
INSERT INTO `table` (`id`, `data`) VALUES (id, data);
SET SESSION SQL_LOG_BIN = 1;
END
mysql プロンプトからプロシージャを呼び出して、レコードを挿入します。
call nolog_insert(50, 'notlogged');
予想どおり、レコード(50, 'notlogged')
は に挿入されtable
ますが、バイナリ ログには書き込まれません。
ただし、トリガーからこの手順を実行したいと考えています。次のようにトリガーを使用する場合:
create trigger my_trigger before insert on blackhole_table for each row call nolog_insert(new.id, new.data);
table
データはバイナリ ログに挿入され、書き込まれます。