不熟悉SQL。
我有以下SQL:
UPDATE my_Table
SET num = num + 1
WHERE id = 1
我希望将num
列限制为超过阈值,假设为100.如果num
达到100,我希望它保持100并且不会增加。
我假设if语句应该以某种方式包含在这里。但无法弄清楚如何。
答案 0 :(得分:4)
我看到的答案可以通过更新声明解决您的问题,无论如何都可以。
直到某人创建了一个不会遵守你的约束的陈述,就像一个新的同事一样,有人会因为忘记它或其他原因而困倦。您应该知道强制执行此规则的其他选项。
您可以创建SQL constraint来检查num
永远不会设置为超过100.这样任何使此值超过100的更新或插入语句都会导致错误而不是执行插入或更新。
强制执行此规则的另一种方法"不是真正的初学者级别,将创建更新并插入触发器,以检查num
是否超过100并重置它在这种情况下为100。运行insert或update语句时,这不会导致错误。我没有一个很好的ANSI-SQL触发器链接,但每个RDBMS都有很好的文档。
答案 1 :(得分:2)
您可以使用CASE
表达式:
UPDATE my_Table
SET num = CASE WHEN num+1 >= 100 THEN 100 ELSE num+1 END
WHERE id=1
答案 2 :(得分:0)
尝试:
UPDATE my_Table SET num=num+1 WHERE id=1 AND num<=99
答案 3 :(得分:0)
在这种情况下,您可以将IIF用于较短版本
UPDATE my_Table SET num=(IIF((num+1)>100,num,num+1)) WHERE id=1