Mon*_*RPG 1 t-sql max set sql-server-2008-r2
我的问题很简单,但我不确定是否可能。
假设我有一个表格,它包含下面的列
PokemonHappiness smallint
Run Code Online (Sandbox Code Playgroud)
是否可以为该列设置最大值?
例如,如果我将最大值设置为 10000 并发送这样的查询
--Assume that PokemonHappiness is equal to 9990
update mytable set PokemonHappiness = PokemonHappiness+50
Run Code Online (Sandbox Code Playgroud)
它应该变成 10000 而不是 10040
这可能吗?
小智 5
如果要在 SQL 表的列上设置最大值,您可以做的一件事是CHECK为该列添加具有特定条件的约束:
ALTER TABLE dbo.mytable ADD CONSTRAINT CK_HAPPINESS_MAX CHECK (PokemonHappiness <= 10000)
Run Code Online (Sandbox Code Playgroud)
但是,这不会以优雅的方式处理越界输入;如果您的输入违反了CHECK约束,SQL 将简单地抛出一个错误。
要正确处理此类输入,您可能应该CASE像其他人建议的那样使用表达式,并且可能使用CHECK约束作为对可以插入的内容的硬约束(以防万一输入值未经审核)。