SQL 服务器中的两个问题

Two questions in SQL Server

  1. 我如何在 SQL 服务器的数据类型字段中定义我选择的固定数据(如 html 中的 SELECT)?
  2. 如何在 Management Studio 中设置不允许大于 50 的列?

谢谢!

即使这个post包含两个问题(这通常是问答网站的问题),我相信两个问题的答案可以相同(否则我不会post 这个答案开始) - 但这是假设我理解第一个问题 - 这基本上是如何定义一个只能包含一组有限选项(如下拉列表或枚举)的列。

基于该假设,并假设我们不是在讨论非常大的值列表,这两个问题都可以通过使用检查约束来回答。

在 SQL 服务器中,检查约束验证试图输入 table 的数据(通过 insertupdate),并抛出如果检查 returns false.

则异常

因此,限制列可以接受的值集是检查约束的一个很好的候选者 - 除非我们谈论的是一个非常大的值列表,这使得编写和维护起来很麻烦并且通常是使用外键更好地覆盖。

所以,假设我想要一个有两列的 table - 一列只能有值 yesnoblackwhite,另一个是 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.

上观看现场演示