检查IF IS NULL或IF NOT EXIST,导致SQL语法错误

时间:2014-05-08 01:43:51

标签: mysql

结果变量是一种返回我读过的null的hacky方法。但是,以下不起作用。早些时候我试过IF NOT EXIST then '(SELECT min(classID) FROM Classes WHERE title LIKE CoName)'也无济于事。

问题代码:

Set result = (SELECT min(classID) FROM Classes WHERE title LIKE CoName);
IF result is null THEN
    INSERT INTO Classes (title)
    VALUES (CoName);
END IF;

这来自一个存储过程,用于从旧表填充新表。 if语句用于检查新值是否已添加到新表中。该过程的其余部分在没有if语句的情况下工作,但提供了重复的条目。

1 个答案:

答案 0 :(得分:0)

如果您尝试忽略插入时的错误,请在CoName上创建唯一索引:

create unique index classes_coname on classes(coname);

然后在插入时忽略错误。以下忽略所有错误:

INSERT IGNORE INTO Classes(title)
    VALUES (CoName);

以下内容更具体针对重复键错误:

INSERT IGNORE INTO Classes(title)
    VALUES (CoName)
    ON DUPLICATE KEY UPDATE title = CoName;