指摘したように、JETはいくつかの制約コマンドを使用することができます。
例:
CREATE TABLE Customers
(CustId IDENTITY (100, 10),
CFrstNm VARCHAR(10),
CLstNm VARCHAR(15),
CustomerLimit DOUBLE,
CHECK (CustomerLimit <= (SELECT SUM (CreditLimit) FROM CreditLimit)))
したがって、上記の中で、顧客の制限が与信限度を超えることはできません。
1日の終わりに、ポスターがどこにあるのかわからないのは、単一のデータベースベンダーがそれぞれ異なる機能や機能を備えているだけでなく、リレーショナルの整合性機能が異なるだけでなく、そのような関係や削除のようなオプションは制限する
上記のように、Access(そしていくつかのSQL DDLコマンド)のRI機能に加えて、私たちにはチェック制約構文(sql DDLコマンドを介して)があり、プロシージャーコード。
また、このような構文は、機能が賢明であり、構文も賢明ではありません。
Access 2010と新しいデータエンジンACEでは、テーブルトリガーとストアプロシージャの選択肢があります。したがって、条件を確認するための手続き型コードを記述することができます。変更前テーブルのトリガーにエラーが発生した場合、更新は行われません。したがって、変更前イベントのストアプロシージャは、レコードの更新を防止するための条件付きテストを実現する別の方法です。しかし、もう一度このようなストア・プロシージャ・コードは、pl/sql、T-SQL、またはSQLの場合と同様にベンダー固有です。
ここで実際の課題は、ストア・プロシージャー・コードの構文と言語が、各システムごとに異なるケースです。
アクセスでは、「チェック」制約にいくつかのDDLコマンドを使用できます。また、いくつかのRI機能(削除制限、カスケード削除、FKカスケード更新)を持つこともできます。最後に、Access 2010(および新しいACEデータエンジン)用のテーブルトリガーコードも作成できるようになりました。
多くの場合、実際の問題は機能の違いではなく、そのような機能の標準の一般的な採用の悪い部分です。
なぜこれをMySQL、Oracle、およびMS-Accessでタグ付けしましたか?あなたはSQL Serverだけを心配しているようですね? –
いいえ、私はSQLServerデータベースに関心があるだけでなく、すべてのデータベースでこれを動作させることができます。私はSQL ServerのMS CheckClauseにリンクを張っているだけです。 – Kobojunkie
MySQLとMS Accessはチェック制約をサポートしていません。 –