如何在sql server的datatype字段中定义固定数据(如 SELECT 在html)的我的选择?如何在management studio中设置不允许数字大于50的列??谢谢!
SELECT
5vf7fwbs1#
尽管这篇文章包含两个问题(这通常是问答网站的一个问题),我相信这两个问题的答案可以是相同的(否则我就不发布这个答案了)-但这是假设我理解了第一个问题-基本上就是如何定义一个只能包含有限选项集的列(如下拉列表或枚举)。基于这个假设,并且假设我们不是在讨论一个非常大的值列表,这两个问题都可以通过使用check约束来回答。在sql server中,检查约束验证试图输入到表中的数据(通过 insert 或者 update ),并在检查返回false时引发异常。因此,限制一个列可以接受的值集是一个很好的检查约束的候选者—除非我们讨论的是一个非常大的值列表,这使得编写和维护起来很麻烦,而且通常使用外键更好。所以,假设我想要一个有两列的表—一个是只能有值的字符串 yes , no , black 以及 white ,另一个是一个int,它的值可以在0到50之间(包括0和50),我会这样写:
insert
update
yes
no
black
white
CREATE TABLE DemoTable ( Enum varchar(5), CONSTRAINT CHK_DemoTable_Enum CHECK (Enum IN('Yes', 'No', 'Black', 'White')), Number tinyint, CONSTRAINT CHK_DemoTable_Number CHECK (Number >= 0 AND Number <= 50) );
你可以在rextster上看到现场演示。
1条答案
按热度按时间5vf7fwbs1#
尽管这篇文章包含两个问题(这通常是问答网站的一个问题),我相信这两个问题的答案可以是相同的(否则我就不发布这个答案了)-但这是假设我理解了第一个问题-基本上就是如何定义一个只能包含有限选项集的列(如下拉列表或枚举)。
基于这个假设,并且假设我们不是在讨论一个非常大的值列表,这两个问题都可以通过使用check约束来回答。
在sql server中,检查约束验证试图输入到表中的数据(通过
insert
或者update
),并在检查返回false时引发异常。因此,限制一个列可以接受的值集是一个很好的检查约束的候选者—除非我们讨论的是一个非常大的值列表,这使得编写和维护起来很麻烦,而且通常使用外键更好。
所以,假设我想要一个有两列的表—一个是只能有值的字符串
yes
,no
,black
以及white
,另一个是一个int,它的值可以在0到50之间(包括0和50),我会这样写:你可以在rextster上看到现场演示。