呼び出されたときにプロシージャに送信されるパラメータとしてテーブル名と ID 番号を使用して、MySQL のテーブルからテーブルを削除するストアド プロシージャを作成する必要があります。テーブル名パラメーターは、削除するテーブルを示し、ID パラメーターは、テーブル内のどの行を削除するかを示します。
これが私の機能しない解決策です:
CREATE PROCEDURE delete_from_table_by_id(IN IN_TABLE_NAME VARCHAR(255),
IN IN_ROW_ID INT UNSIGNED)
BEGIN
DELETE FROM IN_TABLE_NAME
WHERE CONCAT(IN_TABLE_NAME, '_id') = IN_ROW_ID;
END$$
次のように動作するはずです: book、author、publisher などの名前のテーブルがあります。私のデータベースの各テーブルの ID 列は、 table_nameと_idの 2 つの部分で構成されています。したがって、author テーブルでは ID 列の名前はauthor_idであり、book テーブルではbook_idという名前です。たとえば、次のコードは book テーブルから ID 456 の行を削除する必要があります。
CALL delete_from_table_by_id('book', 456);
よろしくお願いします。