sqlserver中的两个问题

g6baxovj  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(297)

如何在sql server的datatype字段中定义固定数据(如 SELECT 在html)的我的选择?
如何在management studio中设置不允许数字大于50的列??
谢谢!

5vf7fwbs

5vf7fwbs1#

尽管这篇文章包含两个问题(这通常是问答网站的一个问题),我相信这两个问题的答案可以是相同的(否则我就不发布这个答案了)-但这是假设我理解了第一个问题-基本上就是如何定义一个只能包含有限选项集的列(如下拉列表或枚举)。
基于这个假设,并且假设我们不是在讨论一个非常大的值列表,这两个问题都可以通过使用check约束来回答。
在sql server中,检查约束验证试图输入到表中的数据(通过 insert 或者 update ),并在检查返回false时引发异常。
因此,限制一个列可以接受的值集是一个很好的检查约束的候选者—除非我们讨论的是一个非常大的值列表,这使得编写和维护起来很麻烦,而且通常使用外键更好。
所以,假设我想要一个有两列的表—一个是只能有值的字符串 yes , no , black 以及 white ,另一个是一个int,它的值可以在0到50之间(包括0和50),我会这样写:

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上看到现场演示。

相关问题