如何正确执行此mysql查询?

时间:2019-12-30 15:54:44

标签: javascript mysql sql

我正在使用npm模块“ mysqljs”,并试图通过它执行查询。

它的目的是检查某个约束或外键是否存在,如果存在则将其删除。

不幸的是,我收到以下错误,无法找出问题所在:

  

错误:您的SQL语法有错误;检查与您的MySQL服务器相对应的手册   在'IF EXISTS(       选择 *       来自第1行的INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS'

代码如下(当然是简化版):

const query = `
  IF EXISTS (
    SELECT * 
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
    WHERE CONSTRAINT_NAME LIKE "Location_User";
  ) THEN
    ALTER TABLE Location DROP CONSTRAINT Location_User;
  END IF
  `

connection.query(query, (error, results) {
  if (error) throw error;
  return results
});

1 个答案:

答案 0 :(得分:1)

您不能在存储过程之外使用IF语句。

请改用JavaScript中的逻辑。

connection.query(`SELECT COUNT(*) AS count
                  FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
                  WHERE CONSTRAINT_NAME LIKE "Location_User";`, (error, results) => {
  if (error) {
    throw error;
  }
  if (results[0].count > 0) {
    connection.query('ALTER TABLE Location DROP CONSTRAINT Location_User;', (error) => {
      if (error) {
        throw error;
      }
    });
  }
});
相关问题