我尝试使用此查询将值kyckling
插入到列Produkter
中,并将值Sallader
插入到列typ
中,但在IF NOT EXISTS
周围遇到错误
BEGIN
IF NOT EXISTS (SELECT *
FROM innehall
WHERE Produkter = 'kyckling'
AND typ = 'Sallader')
BEGIN
INSERT INTO innehall (Produkter, typ)
VALUES ('kyckling', 'Sallader')
END
END;
发布于 2019-06-02 05:08:29
我认为问题在于,只有在编程块--存储过程、函数和触发器中才允许使用诸如IF
语句(而不是if()
函数)这样的控制流逻辑。
您可以对查询执行所需的操作,例如:
INSERT INTO innehall (Produkter, typ)
SELECT Produkter, typ
FROM (SELECT 'kyckling' as Produkter, 'Sallader' as typ) x
WHERE NOT EXISTS (SELECT 1
FROM innehall i
WHERE i.Produkter = x.Produkter AND i.typ = x.typ
);
但更好的方法是让数据库确保唯一性,而不是您必须这样做。所以:
alter table innehall add constraint unq_innehall_produkter_typ
unique (produkter, typ);
然后像这样来表达插入的内容:
insert into innehall (produkter, typ)
values (kyckling', 'Sallader')
on duplicate key update typ = values(typ);
这将尝试更新。如果违反了unique约束,则忽略该错误。
https://stackoverflow.com/questions/56410053
复制相似问题