限制SQL中的值

时间:2016-11-22 18:05:56

标签: sql

不熟悉SQL。

我有以下SQL:

UPDATE my_Table 
SET num = num + 1 
WHERE id = 1

我希望将num列限制为超过阈值,假设为100.如果num达到100,我希望它保持100并且不会增加。

我假设if语句应该以某种方式包含在这里。但无法弄清楚如何。

4 个答案:

答案 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