我正在使用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
});
答案 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;
}
});
}
});