如果在表my_table
中,value
列中只有一行值为column_name
,我想在存储过程中执行一组语句。我尝试了以下内容,但是出现语法错误:
IF ((SELECT COUNT(*) FROM my_table WHERE column_name = value) = 1) THEN
BEGIN
END;
END IF;
对于上下文:在我的过程中,我在某个时刻创建了一个临时表,在那里我存储了一个值列表。然后在程序中,我想检查该临时表中是否存在给定值。
答案 0 :(得分:2)
我认为你可能会更好地构建它
BEGIN
DECLARE myCOUNT INTEGER;
SELECT COUNT(*)
INTO myCount
FROM my_table
WHERE column_name=value;
IF (myCount = 1) THEN
-- do stuff
END IF;
END;
答案 1 :(得分:0)
我不确定你要做的是什么,但是我猜错了" upsert" - 更新记录(如果存在),否则插入新记录。
在任何情况下,如果您要确保name
中的my_table
是唯一的,那么这根本不是正确的方法。相反,声明一个唯一的索引/约束,以便数据库确保数据完整性:
create unique index unq_my_table_name on my_table(name);
然后,您可以使用insert . . . on duplicate key update
修改数据库中的记录。