mysql - 在 mysql 中更新 else INSERT

标签 mysql sql mariadb

我测试了这段代码:

UPDATE books SET price='20000' WHERE user_id='2'
IF ROW_COUNT()=0
INSERT INTO store_books(name,user_id) VALUES ('test1','2')

我遇到了以下错误。

error : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF ROW_COUNT()=0 INSERT INTO store_books(name,user_id) VALUES ('test1','2')' at line 2

有什么办法可以解决这个问题吗?

我不想使用 INSERT INTO ... ON DUPLICATE KEY UPDATE(因为我的主表中有多个键)。

以上例子是寻找新出路的尝试。

我想要的图案: 更新(如果存在) ELSE 插入。

最佳答案

两件事:

  1. INSERT ... ON DUPLICATE KEY UPDATE ... 是迄今为止完成您想做的事情的最佳方式。如果您不这样做,您将不得不使用数据库事务来确保您保持所需操作的完整性。
  2. MySQL(与 MS SQL 服务器不同)不允许有条件地执行查询,但在存储过程中除外。读这个。 If conditional in SQL Script for Mysql

关于mysql - 在 mysql 中更新 else INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333997/

相关文章:

python - 如何在某些事件中从容器向主机发送信号?

mysql - Rails 和 ActiveRecord - 重构多个相同的 where 子句

php - 如何将实际的 NULL 值插入到可为空的列中?

mysql - 需要加快MySQL查询

mysql - 更改 View 以将日期时间更改为 MySQL 中的日期?

regex - MariaDB 中的正则表达式替换

c# - 如何在 SQL 连接字符串的密码中使用分号字符?

java - 从用户搜索条件动态创建 WHERE 子句

java - 从数据库自动创建实体

mysql - 针对 100 多个 wp 数据库和低 RAM 使用率优化 my.cnf