我需要编写一个 MySQL delete-from-table-by-id 存储过程,其中包含表名和 ID 号作为调用时发送到过程的参数。表名参数告诉要从哪个表中删除,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。因此,在 author 表中 ID 列名为author_id,在 book 表中名为book_id。例如,以下代码应该从 book 表中删除 ID 为 456 的行:
CALL delete_from_table_by_id('book', 456);
谢谢大家。