mysql(如果存在) [英] mysql if exists

查看:109
本文介绍了mysql(如果存在)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经凝视了一段时间了.也许有些新鲜的眼睛能够指出我在做错什么..这是我的查询:

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 WHERE rule_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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆