4

char 列タイプを定義したとします。たとえば、(黒、白、赤、青)のみと言うためにその値を厳密にしたい...

どうやってやるの??

私が知っている限り、これはアクセスで簡単です:P

4

4 に答える 4

9

許可されている値がほんの少ししかない場合は、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)
于 2009-03-25T14:32:53.083 に答える
2

ルールを使用する必要があります (指摘されたように、ルールは廃止され、代わりに制約を使用する必要があります)、許可する色を含むカラー テーブルへの外部キーを使用する必要があります。

チェック制約は次のように作成できます。

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

テーブルを使用する場合は、colorName と ID を使用して「Color」テーブルを作成する必要があります。参照が必要なテーブルでは、「カラー」テーブル ID に外部キーを持つ列を追加する必要があります。

「カラー」テーブルを参照するには、結合を使用する必要があります。

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

更新: Rule の代わりに Constraint を使用すると、古いデータベースでも引き続き Rules を使用できます (2000)。

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

それが役に立てば幸い

于 2009-03-25T14:37:10.670 に答える
1

これを行う1つの方法は、別のテーブル「タイプ」を作成し、そこに値を入れることです。Type varchar を持っていたテーブルは、他のテーブルを指す FK TypeID を持つようになりました。

これには追加の結合が必要になりますが、どの文字列がタイプになるかを制御できます。

于 2009-03-25T14:33:43.503 に答える
0

にルールが必要です

はい、アクセスは簡単です。

于 2009-03-25T14:33:15.437 に答える