を許可されていないサブクエリ私は、次の3つのテーブルを持っていますemployees
テーブルの外部キーである列manager_id
もあります(部門にはemployeesテーブルのマネージャがあります)。SQL Serverの制約が
私は、マネージャの下の従業員がマネージャより高い給与を持つことができないという制約を設ける必要があるという要件があります。これを解決するに
私の試み:
ALTER TABLE employees
ADD CONSTRAINT check_salary
CHECK (salary > (SELECT salary
FROM employees e2
INNER JOIN employees_departments ed2 ON e2.id_employee = ed2.id_employee
INNER JOIN departments d2 ON d2.id_department = ed2.id_department
WHERE e2.id_employee != manager_id (but how do I get the manager id)
AND d2.id_departament = manager_department_id (again don't know how to do get it)
)
は、私はサブクエリが許可されていないというエラーが発生します。これは制約内でも可能ですか?どのようにそれは通常のクエリでモデル化できますか?
また、私はSQL Serverにはほとんど経験がなく、一般的にSQLはほとんどないと付け加えなければなりません。
大変助かりました!
チェック制約で直接サブクエリを使用することはできません。あなたはスカラーUDFを使うことができますが、チェック制約の中にはこれらの問題がたくさんあります。 –
本当に欲しいのは、外部キーの制約です。つまり、クエリに「クエリ」を取得するには、クエリを含む関数を記述してスカラー値を出力し、その関数をチェック制約で使用することができます。 –