0

私は SQL Server の管理にまったく慣れていないので、テーブルに制約を追加しようとしました。

状況は、「Y」または「N」のみを値として許可する列を作成したことです。

そこで、表の「制約」を右クリックして、Management Studio で制約を作成しようとしました。

ただし、制約を作成する構文についてはまったくわかりません。最後に、インターネットのテンプレートを参考にして、「制約式のチェック」ウィンドウにコードを入力してみました。SQL Server は常に「定数の検証中にエラーが発生しました」と通知します。

最初の制約を書くのを手伝ってくれませんか? どうやって始めたらいいのかわからないからです。

私の要件は次のとおりです。

I have a table called "Customer"
I created a column called "AllowRefund"
The column "AllowRefund" is only allowed to 'Y' or 'N'

ありがとう。

4

3 に答える 3

1

これは次のように行うことができます。

ALTER TABLE Customer 
ADD CONSTRAINT CK_Customer_AllowRefund
CHECK (AllowRefund in ('Y','N'))

ただし、@JohnFx は正しいです。この列をビット フィールドにしたほうがよいでしょう。

于 2012-11-02T22:14:24.813 に答える
1

私はJohnFixに部分的に同意しますが、チェック制約を定義するための正しい構文を知っていると、将来(明らかにマニュアルを読んでいないので)役に立つかもしれないので、そのような制約を作成するためのSQLは次のとおりです:

alter table customer 
  add constraint check_yes_no check (AllowRefund in ('Y', 'N'));

NOT NULL常にその値があることを確認するために、列を次のように定義することもできます。

(「Management Studio」を使用していないため、そのSQLをどこにどのように入力する必要があるかはわかりません)。

于 2012-11-02T22:14:35.513 に答える
1

あなたがしようとしていることに反対することをお勧めします。2 つの状態を持つ値を表すように設計されたデータ型 (ビット) があります。このタイプを使用する場合、制約はまったく必要ありません。SQL Server は、追加の作業を必要とせずに値を 1 または 0 に強制します。1 を yes、0 を no として扱うようにアプリを設計するだけです。

あなたが試みているアプローチは良い考えではなく、何の役にも立ちません。

于 2012-11-02T22:10:27.650 に答える