所以 - 我的代码有问题。我正在控制台中直接测试并获得“语法错误”
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 'IF EXISTS附近(SELECT * FROM user_inventory WHERE resource_id ='6' AND uid ='1')T'在第1行
IF EXISTS(SELECT * FROM user_inventory WHERE resource_id = '6' AND uid ='1')
THEN UPDATE user_inventory SET resource_count = resource_count+1 WHERE resource_id = 6 AND uid = 1
ELSE INSERT INTO user_inventory(uid, resource_id, resource_count) VALUES (1, 6, 1);
我之前从未使用过IF EXISTS条款......所以我不确定我做错了什么。
答案 0 :(得分:4)
SQL IF
语句只能在stored program内使用。您不能像在尝试的那样在通用SQL上下文中使用它。
但是,您无需在此处使用IF
:
在user_inventory
表格中定义合适的唯一性约束:
ALTER TABLE user_inventory ADD UNIQUE (uid, resource_id)
使用INSERT ... ON DUPLICATE KEY UPDATE
:
INSERT INTO user_inventory
(uid, resource_id, resource_count)
VALUES
(1, 6, 1)
ON DUPLICATE KEY UPDATE
resource_count = resource_count + 1