SQL 服务器中的两个问题
Two questions in SQL Server
- 我如何在 SQL 服务器的数据类型字段中定义我选择的固定数据(如 html 中的
SELECT
)?
- 如何在 Management Studio 中设置不允许大于 50 的列?
谢谢!
即使这个post包含两个问题(这通常是问答网站的问题),我相信两个问题的答案可以相同(否则我不会post 这个答案开始) - 但这是假设我理解第一个问题 - 这基本上是如何定义一个只能包含一组有限选项(如下拉列表或枚举)的列。
基于该假设,并假设我们不是在讨论非常大的值列表,这两个问题都可以通过使用检查约束来回答。
在 SQL 服务器中,检查约束验证试图输入 table 的数据(通过 insert
或 update
),并抛出如果检查 returns false.
则异常
因此,限制列可以接受的值集是检查约束的一个很好的候选者 - 除非我们谈论的是一个非常大的值列表,这使得编写和维护起来很麻烦并且通常是使用外键更好地覆盖。
所以,假设我想要一个有两列的 table - 一列只能有值 yes
、no
、black
和 white
,另一个是 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.
上观看现场演示
- 我如何在 SQL 服务器的数据类型字段中定义我选择的固定数据(如 html 中的
SELECT
)? - 如何在 Management Studio 中设置不允许大于 50 的列?
谢谢!
即使这个post包含两个问题(这通常是问答网站的问题),我相信两个问题的答案可以相同(否则我不会post 这个答案开始) - 但这是假设我理解第一个问题 - 这基本上是如何定义一个只能包含一组有限选项(如下拉列表或枚举)的列。
基于该假设,并假设我们不是在讨论非常大的值列表,这两个问题都可以通过使用检查约束来回答。
在 SQL 服务器中,检查约束验证试图输入 table 的数据(通过 insert
或 update
),并抛出如果检查 returns false.
因此,限制列可以接受的值集是检查约束的一个很好的候选者 - 除非我们谈论的是一个非常大的值列表,这使得编写和维护起来很麻烦并且通常是使用外键更好地覆盖。
所以,假设我想要一个有两列的 table - 一列只能有值 yes
、no
、black
和 white
,另一个是 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.
上观看现场演示