gpt4 book ai didi

mysql - 以表名和ID号为参数的MySQL delete-from-table-by-id存储过程

转载 作者:行者123 更新时间:2023-11-29 00:32:04 24 4
gpt4 key购买 nike

我需要编写一个 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);

提前谢谢大家。

最佳答案

您不能将变量用于表名或列名。

最简单的解决方案是使用 prepareexecute .

SET @s = 'DELETE FROM ? WHERE CONCAT(?, '_id') = ?';

PREPARE stmt2 FROM @s;

SET @inTableName = 'some_table';
SET @inRowId = 42;

EXECUTE stmt2 USING @inTableName, @inTableName, @inRowId;

我把这段代码从脑海中拉了出来;我还没试过。但我很确定它应该有效。

关于mysql - 以表名和ID号为参数的MySQL delete-from-table-by-id存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com