插入前检查

时间:2016-06-22 21:49:00

标签: mysql sql

我需要在插入前检查一个值。但由于某种原因,我无法弄明白。这是我的代码:

set @accID = (select id from table2); 

IF @accID IS NOT NULL THEN
    INSERT INTO task
    (account_id)
    VALUES (@accID);
END IF;

上面的代码有什么问题,因为它显示无效的sql语法错误?

2 个答案:

答案 0 :(得分:1)

这应该就是你所需要的。

IF(@accID IS NOT NULL) 开始     插入任务     (帐户ID)     价值(@accID) END

答案 1 :(得分:0)

您可以通过略微奇怪的INSERT SELECT

获得相同的效果
INSERT INTO task (account_id)
SELECT @accID
FROM DUAL
WHERE @accID IS NOT NULL
;

DUAL是MySQL内置的假表;并且是必需的,因为如果没有WHERE,您就无法拥有FROM

如果使用的RDBMS没有类似于DUAL的构造,很可能会用简单的子查询替换(SELECT 1) AS dummyTbl