mysql(如果存在) [英] mysql if exists
问题描述
我已经凝视了一段时间了.也许有些新鲜的眼睛能够指出我在做错什么..这是我的查询:
I've been staring at this for a while now. Maybe some fresh eyes will be able to point out what Im doing wrong.. Here is my query:
IF (EXISTS (SELECT * FROM `admin_rule_module` WHERE `rule_set_id`='13' AND `entity_id`='2'))
begin
UPDATE `admin_rule_module`
SET `permission`='allow' WHERE `entity_id`='2'
end
else
begin
INSERT INTO `admin_rule_module` (`rule_set_id`, `entity_id`, `permission`)
VALUES ('13', '2', 'allow')
end
我遇到以下错误:
您的SQL语法有错误; 检查对应的手册 您的MySQL服务器版本 在'IF(EXISTS)附近使用正确的语法 (选择*从
admin_rule_module
rule_set_id
='13'和'enti'在 第1行
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (EXISTS (SELECT * FROM
admin_rule_module
WHERErule_set_id
='13' AND `enti' at line 1
推荐答案
尝试一下...
INSERT INTO admin_rule_module VALUES (13, 2, 'allow')
ON DUPLICATE KEY UPDATE permission = 'allow', entity_id = 2;
至少假设您具有UNIQUE KEY键(rule_set_id,entity_id).如果要使用条件语句和多个语句来执行此操作,则必须将其放在PROCEDURE或FUNCTION中.
Assuming you've a UNIQUE KEY key (rule_set_id, entity_id), at least. If you want to do it with a conditional and multiple statements, you have to put it in a PROCEDURE or a FUNCTION.
这篇关于mysql(如果存在)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!