Mysql '中的未知列;存储过程中的字段列表
我正在创建一个存储过程,但字段名有问题。。。当我运行该过程时,在“字段列表”中有一个未知列“pa”,但我不明白为什么Mysql '中的未知列;存储过程中的字段列表,mysql,sql,stored-procedures,prepared-statement,Mysql,Sql,Stored Procedures,Prepared Statement,我正在创建一个存储过程,但字段名有问题。。。当我运行该过程时,在“字段列表”中有一个未知列“pa”,但我不明白为什么 CREATE PROCEDURE `deletePost`(IN p_id_post INT, IN p_Tbl_ref CHAR(2)) BEGIN SET @id_post = p_id_post; SET @Tbl_ref = p_Tbl_ref; DELETE FROM `tbl` WHERE tbl_ref_product = @Tbl_ref AND id_ta
CREATE PROCEDURE `deletePost`(IN p_id_post INT, IN p_Tbl_ref CHAR(2))
BEGIN
SET @id_post = p_id_post;
SET @Tbl_ref = p_Tbl_ref;
DELETE FROM `tbl` WHERE tbl_ref_product = @Tbl_ref AND id_table = @id_post;
END
我也试过准备好的声明
CREATE PROCEDURE `deletePost`(IN p_id_post INT, IN p_Tbl_ref CHAR(2))
BEGIN
PREPARE STMT FROM
"DELETE FROM `tbl` WHERE tbl_ref_product = ? AND id_table = @id_post";
SET @id_post = p_id_post;
SET @Tbl_ref = p_Tbl_ref;
EXECUTE STMT USING @Tbl_ref;
DEALLOCATE PREPARE STMT;
END
。。。但同样的结果。。。有什么想法吗?非常感谢 您正在delete语句中将列名用作表。由于表是在sql中预定义的,所以它会给您带来错误。 请尝试以下代码
`CREATE PROCEDURE deletePost(IN p_id_post INT, IN p_Tbl_ref CHAR(2))
BEGIN
SET @id_post = p_id_post;
SET @Tbl_ref = p_Tbl_ref;
DELETE FROM `tbl` WHERE [table] = @Tbl_ref AND id_table = @id_post;
END`
根据程序定义,您所描述的问题完全没有意义,因此,如果您听到蹄子的声音,并且确定不是马,您可能需要检查斑马: 尝试
显示触发器代码>
下一个可能的原因是该过程实际上工作正常,但是表tbl
定义了一个删除前或删除后触发器,并且该触发器有一个设计错误,引用了p\u tbl\u ref CHAR(2)中不存在的列“pa”。”可能该表被称为类似“pa%”的名称不,我也尝试手动使用“pa”,结果相同…:/不,我的真实列名不是table,而是tbl_ref_product,这不是问题所在…:/我知道这是一个触发器,但我不知道如何找出它是什么触发器。这几乎立刻解决了我的问题,谢谢!