SQL Server-ルールは何ですか?ルールと制約の違いは何ですか?

目次

ルールは何ですか?

ルールを作成するには?

ルールを削除するには?

制約を作成するには?

ルールと制約の違いは何ですか?


ルールは何ですか?

これは、1つまたは複数のテーブルの1つまたは複数の列に関連付けることができる単一のSQL Serverオブジェクトです。さまざまな方法を使用してデータ値の検証を完了することができ、関数を使用して検証情報を返すことができます。また、キーワードBETWEEN、LIKE、INを使用して入力データのチェックを完了することもできます。

簡単に言うと、テーブルの特定の列にルールを作成し、ユーザーがデータを挿入すると、挿入できるデータの種類、挿入できないデータの種類、制限の役割を果たす

 


 

ルールを作成するには?

文法:

ルールの作成rule_name

なので

codition_expression

 

要件:ユーザーが入力したスコアの値を制限するスコアテーブルがあり、0〜100の間である必要があります

スコア
id シド スコア
1 1 66
2 1 99
2 77

 

最初のステップはルールを作成することです

--创建规则sc
--设置成绩得取值范围在0和100之间
create rule sc
as
@value between 0 and 100

 

2番目のステップは、ルールを特定の列にバインドすることです

--绑定规则到score表的score列
sp_bindrule sc,'score.score'

スコアテーブルのスコア列にデータを挿入すると、システムは自動的にエラーを報告します

 


 

ルールを削除するには?

注:ルールを削除する場合は、まずルールの「バインドを解除」してから、ルールを削除する必要があります

バインド解除ルール

文法:

-バインド解除ルール

sp_unbindrule [@obkectname =] <object_name>

[、[@ futureonly =] <futureonlu_flag>

要件:スコアルールを削除する

--解除规则绑定
sp_unbindrule 'score.score'

--删除规则
drop rule score

 


一部の友人は尋ねるかもしれません、CHECK制約はテーブルの特定の列も制限します。それでは1つでは十分ではありません。なぜ2つあるのでしょうか。それらの違いは何ですか?まず食べてみよう~~

制約を作成するには?

例:制約メソッドを使用してスコア列の範囲を指定し、入力を制限する

--创建check约束
--指定字段score输入的分数在0和100之间
create table score_info 
(
id int not null,
cid int not null,
score int CHECK( score between 0 and 100)
);

スコアテーブルのスコアフィールドにデータを挿入すると、システムが自動的にエラーを報告します

 

関連ユーザーもクリックできます:https : //blog.csdn.net/weixin_43319713/article/details/104320998


 

ルールと制約の違いは何ですか?

  • ルールはデータベースに個別に保存され、制約はテーブルにリンクされています
  • テーブルが削除されると、制約も削除されますが、ルールは
  • フィールドには複数の制約を設定できますが、ルールは1つだけです

 

 

おすすめ

転載: blog.csdn.net/weixin_43319713/article/details/105938444