我测试了这个代码:
UPDATE books SET price='20000' WHERE user_id='2'
IF ROW_COUNT()=0
INSERT INTO store_books(name,user_id) VALUES ('test1','2')
我遇到了以下错误。
错误:您的sql语法有错误;请查看与您的mariadb服务器版本对应的手册,以了解在第2行“if row\u count()=0 insert into store\u books(name,user\id)values('test1','2')”附近使用的正确语法
有解决这个问题的办法吗?
我不想使用插入。。。在重复键更新时(因为我的主表中有多个键)。
上面的例子是寻找新方法的尝试。
我想要的模式:update(如果存在)else insert。
1条答案
按热度按时间6ie5vjzr1#
两件事:
INSERT ... ON DUPLICATE KEY UPDATE ...
是做你想做的事的最好方法。如果不这样做,则必须使用数据库事务来确保所需操作的完整性。mysql(不像mssqlserver)不允许有条件地执行查询,除非在存储过程中。读这个。mysql的sql脚本中的if条件