Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysql if exists

Tags:

sql

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

I'm getting the following error:

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

like image 467
Dalton Conley Avatar asked Jan 28 '26 16:01

Dalton Conley


1 Answers

Try this...

INSERT INTO admin_rule_module VALUES (13, 2, 'allow') 
ON DUPLICATE KEY UPDATE permission = 'allow', entity_id = 2;

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.

like image 101
David Fells Avatar answered Jan 30 '26 06:01

David Fells



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!