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
解决方案
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.