maria db 插入或更新

Sam*_*uel 5 sql mariadb

我有以下 sql 代码:

UPDATE google_calendar_accounts SET google_refresh_token="d",google_org_token="d" WHERE userID=5;
IF ROW_COUNT()=0 THEN
INSERT INTO google_calendar_accounts (userID,google_refresh_token,google_org_token) VALUES (5,"d","d"); END IF
Run Code Online (Sandbox Code Playgroud)

我收到错误:

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在第 2 行的 '' 附近使用的正确语法

我正在使用 mariadb 10.1.14

SHR*_*SHR 4

尽管评论建议这样做INSERT ... ON DUPLICATE KEY UPDATE ...,但可能有理由先进行更新,然后在没有受影响的行的情况下插入,就像OP尝试的那样:这样自动增量就不会徒劳地增加。

因此,该问题的一个可能的解决方案可能是使用带有条件的 select 插入where row_count()=0

例如:

--first query
UPDATE google_calendar_accounts 
SET google_refresh_token='d',google_org_token='d' 
WHERE userID=5;
--second query use the affected rows of the previous query
INSERT IGNORE INTO google_calendar_accounts (userID,google_refresh_token,google_org_token)
SELECT 5,'d','d' WHERE ROW_COUNT()=0 
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我已经IGNORE在插入查询中添加了与更新条件匹配的行,但它没有更新,因为所有列都与更新的列相同,就像更新之前已经有 row 的情况一样5,'d','d'。在这种情况下,如果 5 是主键或唯一键,则查询不会失败。