PHP PDOを使用しているため、1つのクエリに収まる必要があるテーブル行削除ステートメントでユーザーIDをログに記録するMySQLトリガーを作成する必要があります。これは私がこれまでに思いついたものです:
実行する削除アクションとは関係ありませんが、削除クエリでユーザー ID を渡す方法が必要です。
通常、クエリは次のようになります。
DELETE FROM mytable WHERE mytable.RowID = :rowID
ステートメントで複数のクエリを使用できる場合、次のようにします。
SET @userID := :userID;
DELETE FROM mytable WHERE mytable.RowID = :rowID;
このようにして、トリガーイベントが発生する前に変数 @userID が設定され、それを使用できるようになります。ただし、delete ステートメントを 1 つのクエリで絞り込む必要があるため、次のように考えました。
DELETE FROM mytable
WHERE CASE
WHEN @userID := :userID
THEN mytable.RowID = :rowID
ELSE mytable.RowID IS NULL
END
注意: RowID は主キーであるため、null になることはありません。ここで、ユーザー ID を監査テーブルに記録するために削除トリガーを作成する必要がありますが、この場合、削除クエリ自体の前にトリガーが起動されると思います。つまり、@userID 変数は作成されませんか? これは、トリガーに値として渡すという私の考えでした。
解決に近づいたような気がしますが、この問題はブロッカーです。ステートメントに複数のクエリを使用せずにユーザー ID 値をトリガーに渡す方法は? ご意見、ご提案はありますか?