Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何为SQL Server列设置最小值_Sql Server - Fatal编程技术网

Sql server 如何为SQL Server列设置最小值

Sql server 如何为SQL Server列设置最小值,sql-server,Sql Server,我正在使用SQLServer2008R2 我想设置一个列的最小值 列类型为int 我想将最小值设置为0 因此,如果我用-32更新列,它应该自动将列值设置为0,最简单的解决方案是强制调用代码更正它们的数据,而不是在插入时神奇地更改它。为此,请添加一个检查约束: Alter Table MyTable Add Constraint CK_MyTable_Col Check ( MyCol >= 0 ) 使用 不确定数据库为什么要这样做?您不应该在代码中这样做吗?我可以这样做,但如果数

我正在使用SQLServer2008R2

我想设置一个列的最小值

列类型为
int

我想将最小值设置为0


因此,如果我用-32更新列,它应该自动将列值设置为0,最简单的解决方案是强制调用代码更正它们的数据,而不是在插入时神奇地更改它。为此,请添加一个检查约束:

Alter Table MyTable
    Add Constraint CK_MyTable_Col Check ( MyCol >= 0 )

使用

不确定数据库为什么要这样做?您不应该在代码中这样做吗?我可以这样做,但如果数据库正在这样做就更容易了:)所以不可能让mssql做我想做的事情?从技术上讲,您可以编写一个触发器来破解插入的值,但是,更正调用代码会更好,这样它就不会试图在该列中写入负值。@pokemoncrat-顺便说一句,如果小于零的值无效,即使修复了调用代码,也应该添加检查约束。原因是其他系统意外地试图插入负数,或者有人在以后更改了代码,但没有考虑此限制。@pokemoncrat-数据库数据类型是否可以存储该值不是问题所在。您希望检查约束确保所存储的数据类型有效。当然,int可以存储负值(实际上是数十亿个负值),但在设计数据库时,您希望确保给定列的值尽可能正确。假设有一天会有一个邪恶的开发人员出现,并试图绕过您的应用程序将负值直接填入您的列中。@pokemoncrat-您是目前唯一的开发人员。。如果你明天中了彩票,坐船去大溪地,会怎么样?如果项目范围扩大,会发生什么情况?最好以其他开发人员最终将使用您的代码的心态进行开发。