Deptでテーブルの制約を定義して、すべてのマネージャの年齢が30を超えないようにする必要があります。 私は初心者ですので、ユーザ定義関数を使用したくありません。 ここでは簡単な解決策が必要です。これは私のチェックをcreate tableステートメントに適用することができます。 私はcheckステートメントまたはアサーションステートメントを使いたいです。Sqlクエリ文のクエリエラー
create table emp(eid int primary key,ename varchar(20),age int,salary real CHECK (salary >= 10000));
create table dept(did int primary key, buget real,managerid int foreign key (managerid) references emp check ((select eid from emp where age >30)));
とその次のエラーを与えて、私は、Microsoft SQL管理スタジオに2014
を使用していますなぜ
Msg 156, Level 15, State 1, Line 54
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 54
Incorrect syntax near ')'.
私は知らない私がやっているところを教えてください違う。 ありがとう!
時代が変わるたびに更新する必要があるので、 'age'を固定値として保存しないでください。代わりに生年月日を保存し、「年齢」を計算カラムに設定してください – Lamak
見てください:http://stackoverflow.com/questions/3880698/can-a-check-constraint-relate-to-another-table or http ://stackoverflow.com/questions/13000698/sub-queries-in-check-constraint – etsa
説明しているのはビジネスルールです。データの整合性ルールではありません。したがって、そのルールをデータベースレイヤではなくアプリケーションレイヤに実装する方がよいでしょう。 –