Answers:
首先回答:
UPDATE Orders SET Quantity = Quantity + 1 WHERE ...
回答第二个问题:
有几种方法可以做到这一点。由于您未指定数据库,因此假设使用MySQL。
INSERT INTO table SET x=1, y=2 ON DUPLICATE KEY UPDATE x=x+1, y=y+2
REPLACE INTO table SET x=1, y=2
他们俩都可以解决您的问题。但是,第一种语法允许更灵活地更新记录,而不仅仅是替换它(如第二种一样)。
请记住,要使两者同时存在,必须定义一个唯一键。
第一个问题的单步答案是使用类似以下内容的方法:
update TBL set CLM = CLM + 1 where key = 'KEY'
那完全是一种单一指令的方式。
至于第二个问题,您不必求助于DBMS特定的SQL体操(例如UPSERT
)来获得所需的结果。有一种执行更新或插入操作的标准方法,不需要特定的DBMS。
try:
insert into TBL (key,val) values ('xyz',0)
catch:
do nothing
update TBL set val = val + 1 where key = 'xyz'
也就是说,您尝试首先进行创建。如果已经存在,请忽略该错误。否则,将其创建为0值。
然后执行无论是否可以正常运行的更新:
这不是一条指令,但令人惊讶的是,这是我们长期以来一直成功完成的方式。