假设我定义了一个 char 列类型。我想严格说它的价值,例如(黑色,白色,红色,蓝色)只有......
我怎样才能做到这一点??
据我所知,这在 Access 中很容易:P
假设我定义了一个 char 列类型。我想严格说它的价值,例如(黑色,白色,红色,蓝色)只有......
我怎样才能做到这一点??
据我所知,这在 Access 中很容易:P
如果只有几个允许的值,那么您可以使用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)
您应该使用规则(正如所指出的,现在不推荐使用规则,而应使用约束)或包含您允许的颜色的颜色表的外键。
可以像这样创建检查约束:
ALTER TABLE MyTable
ADD CONSTRAINT CK_MyTable_ColorType
CHECK (ColorType IN ('Black', 'White', 'Red', 'Blue'))
如果您想使用表格,那么您应该创建一个带有颜色名称和 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')
希望能帮助到你
一种方法是创建一个单独的表“类型”并将您的值放在那里。曾经具有类型 varchar 的表现在将具有指向另一个表的 FK TypeID。
这将需要一个额外的连接,但可以让您控制哪些字符串可以是类型。
您需要列上的规则
是的,它就像访问一样容易。