【问题标题】:MySQL stored procedure ignores DELETE statementMySQL 存储过程忽略 DELETE 语句
【发布时间】:2014-06-27 15:35:04
【问题描述】:

我有这个从 PHP 脚本调用的存储过程。它有很少的选择语句和删除语句。除了 DELETE 查询没有执行之外,一切正常。它被忽略了!请帮忙。谢谢

CREATE PROCEDURE `proc_name`(IN id INT, IN type CHAR(50))
DETERMINISTIC
COMMENT 'procedure'
BEGIN 
DECLARE LEGACY_EN_ID INT;
SET IN_ID = id;
SELECT  IF(e.legacy_id > 0, e.legacy_id, 0) INTO LEGACY_EN_ID FROM tablename e WHERE e.id = IN_ID LIMIT 1;

/* Delete record if it exists */
        DELETE
        FROM tablename
        WHERE entityID = LEGACY_EN_ID;

【问题讨论】:

  • 生成一些 SQL Fiddle 示例,产生错误并将其与您的查询一起发布。
  • 被忽略或条件导致没有相关记录
  • @Randy 没有提交任何地方。
  • @TonyHopkinson 如果我在删除查询中对 id 进行硬编码,它可以工作,但我确实检查了 LEGACY_EN_ID 是否有一个值,因为当我在存储过程中打印 SELECT LEGACY_EN_ID 时它确实显示了一个 id...
  • 有点猜想刚刚注意到您使用的是 CHAR(50) 而不是 VarChar(50)...

标签: php mysql sql stored-procedures procedure


【解决方案1】:
  1. 检查执行存储过程的用户是否有权这样做。
  2. 这可以通过使用同一用户直接通过mysql命令行连接并尝试执行存储过程中生成的查询来检查。
  3. 或者创建一个简单的PHP脚本,使用mysql_query直接调用delete sql。如果此成功,则您可以访问。

【讨论】:

  • 试过了。权限看起来不错......删除语句仍然没有乐趣
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多