SQLServer:如何将固定值绑定到列?

发布于 2024-07-15 05:07:58 字数 98 浏览 3 评论 0原文

假设我定义了一个 char 列类型。 我想严格限制它的值,例如(黑、白、红、蓝)……

我该怎么做?

据我所知,这在 Access 中很容易:P

Say I defined a char column Type. I want to strict its value to say for example (Black, White, Red, Blue) Only...

How can I do that??

All i know, this is easy in Access :P

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

帅的被狗咬 2024-07-22 05:07:58

如果只有几个允许的值,那么您可以使用 CHECK 约束

ALTER TABLE dbo.Your_Table
ADD CONSTRAINT CK_YourTable_YourColumn
    CHECK (Your_Column IN ('Black', 'White', 'Red', 'Blue'))

如果有更多值,则可以使用查找表和 FOREIGN KEY 约束

CREATE TABLE dbo.Lookup_Colours (Colour VARCHAR(10))
-- then populate Lookup_Colours with all permitted values

ALTER TABLE dbo.Your_Table
ADD CONSTRAINT FK_YourTable_YourColumn
    FOREIGN KEY (Your_Column)
    REFERENCES dbo.Lookup_Colours (Colour)

If there are just a few permitted values then you can use a CHECK constraint:

ALTER TABLE dbo.Your_Table
ADD CONSTRAINT CK_YourTable_YourColumn
    CHECK (Your_Column IN ('Black', 'White', 'Red', 'Blue'))

If there are more values then you can use a lookup table and a FOREIGN KEY constraint:

CREATE TABLE dbo.Lookup_Colours (Colour VARCHAR(10))
-- then populate Lookup_Colours with all permitted values

ALTER TABLE dbo.Your_Table
ADD CONSTRAINT FK_YourTable_YourColumn
    FOREIGN KEY (Your_Column)
    REFERENCES dbo.Lookup_Colours (Colour)
女中豪杰 2024-07-22 05:07:58

您应该使用规则(正如所指出的,规则现已弃用,而应使用约束)或包含您允许的颜色的颜色表的外键。

检查约束可以这样创建:

ALTER TABLE MyTable
ADD CONSTRAINT CK_MyTable_ColorType
    CHECK (ColorType IN ('Black', 'White', 'Red', 'Blue'))

如果您想使用表,那么您应该创建一个带有 colorName 和 ID 的“颜色”表。 在需要引用的表上,您应该将带有外键的列添加到“颜色”表 ID。

要引用“颜色”表,您必须使用连接,例如

SELECT *
FROM   MyTable INNER JOIN
         ColorTable ON MyTable.ColorID = ColorTable.ID

更新:使用约束而不是规则,但较旧的数据库仍然可以使用规则(2000)。

CREATE RULE Color_Rule
AS 
@list IN ('Black', 'White', 'Red', 'Blue')

希望能帮助到你

You should either use a Rule (as was pointed out Rules are now deprecated instead constraints should be used) or a foreign key to a Color table containing the Colors you allow.

A Check constraint can be created like this:

ALTER TABLE MyTable
ADD CONSTRAINT CK_MyTable_ColorType
    CHECK (ColorType IN ('Black', 'White', 'Red', 'Blue'))

If you want to go with a table, then you should create a 'Color' table with the colorName and an ID. On the table(s) that need the reference you should add a column with the foreign key to the 'Color'-table ID.

To reference the 'Color'-table you have to use a join e.g.

SELECT *
FROM   MyTable INNER JOIN
         ColorTable ON MyTable.ColorID = ColorTable.ID

Updated: With Constraint instead of Rule older Databases can still use Rules though (2000).

CREATE RULE Color_Rule
AS 
@list IN ('Black', 'White', 'Red', 'Blue')

Hope it helps

微凉徒眸意 2024-07-22 05:07:58

一种方法是创建一个单独的表“类型”并将您的值放在那里。 过去具有 varchar 类型的表现在将具有指向另一个表的 FK TypeID。

这将需要额外的连接,但可以让您控制哪些字符串可以是类型。

One way to do this would be to create a separate table "Type" and put your values there. The table that use to have the Type varchar, would now have a FK TypeID that points to the other table.

This will require an extra join, but will give you control over what strings can be Types.

笨笨の傻瓜 2024-07-22 05:07:58

您需要列规则

是的,就像访问一样简单。

You need a rule on the column

And yes , it's as easy as it is in access.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文