我正在 MySQL 中编写一个从视图中读取条目并根据各种条件将行插入另一个表的过程。在这种情况下,我有多达 4 个可能的size_id
变量,命名my_size_1, my_size_2, my_size_3
和my_size_4
. 如果它们没有值,它们是NULL
。在我的存储过程中编写以下表达式会导致 SQL 错误:
-- Insert recommendation options --
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_1);
IF my_size_2 IS NOT NULL THEN
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_2);
END;
IF my_size_3 IS NOT NULL THEN
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_3);
END;
IF my_size_4 IS NOT NULL THEN
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_4);
END;
...但是,删除IF
语句可以修复错误。也就是说,以下将运行得很好:
-- Insert recommendation options --
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_1);
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_2);
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_3);
INSERT INTO `size_recommendation_options`
VALUES (my_size_recommendation_id, my_size_4);
这是为什么?这不是世界末日——我可以在DELETE FROM size_recommendation_options WHERE size_id IS NULL
之后添加一个,但是所有不必要的插入都会大大减慢存储过程。为什么第一块无效的SQL?
谢谢。