2016-11-02 11 views
1

私は2つのテーブルDepartmentsWorkersを持っています。SQL ServerでテーブルFK列を一意の値で更新するにはどうすればよいですか?

Departments表はManagerIDの列を持ちます。 managerIDをWorkers.IDから選択してDepartments.ManagerIDに追加しますが、同時に誰も異なる部門のマネージャになることはできません。更新クエリでどのように制御できますか?

Departmentsテーブル

enter image description here

労働者テーブル

enter image description here

+1

IDが異なる場合にのみ、 'Departments.ManagerID'に' Workers.ID'を追加しますか? – Hearner

+0

はいすべてのマネージャーıdは一意である必要があります –

+1

サンプルデータを提供できますか?更新前と更新後にテーブルに3〜4のレコードが表示されている可能性はありますか? –

答えて

0

あなたが最も簡単な方法よりも、複数の部署のマネージャーであることから管理者をブロックしたい場合は一意のインデックスを作成することです欄の部署テーブルで

create unique nonclustered index UX_ManagerID on Departments (ManagerID) 
where ManagerID is NOT NULL; 

マネージャーを複数の部門のボスにしようとするすべての更新と挿入が失敗します。 エラーメッセージに「UX_ManagerID」という名前が表示されますので、例外メッセージでその名前を確認し、ユーザーに素敵なメッセージを伝えることができます。

関連する問題