目次
ルールは何ですか?
これは、1つまたは複数のテーブルの1つまたは複数の列に関連付けることができる単一のSQL Serverオブジェクトです。さまざまな方法を使用してデータ値の検証を完了することができ、関数を使用して検証情報を返すことができます。また、キーワードBETWEEN、LIKE、INを使用して入力データのチェックを完了することもできます。
簡単に言うと、テーブルの特定の列にルールを作成し、ユーザーがデータを挿入すると、挿入できるデータの種類、挿入できないデータの種類、制限の役割を果たす
ルールを作成するには?
文法:
ルールの作成rule_name
なので
codition_expression
要件:ユーザーが入力したスコアの値を制限するスコアテーブルがあり、0〜100の間である必要があります
id | シド | スコア |
1 | 1 | 66 |
2 | 1 | 99 |
3 | 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つだけです