0

私の会社が取引しているすべての会社を保持する会社テーブルがあり、会社データベースにあります。

そのテーブルと、まったく別のデータベース(人事データベース)にある別のテーブル(人事テーブル)との関係を作りたいと思います。

両方のデータベースは同じサーバー上にあります。

どうすればこれを達成できますか?

4

2 に答える 2

1

「この状況では外部キーを使用できませんが、回避策があります。チェック制約でラップされたトリガーまたはUDFのいずれかを使用できます。いずれにしても、データの整合性は完全に完全ではありません。親テーブルを持つデータベースがクラッシュして復元した場合バックアップからそれを取得すると、簡単に孤児になってしまう可能性があります。」

別のデータベースからのテーブルの外部キー

于 2012-04-21T21:24:29.457 に答える
0

共通キーを使用してデータを選択するには、3つの部分からなる修飾子database-schema-tableを含むビューを作成できます。以下では、各人事エントリに、それらを結び付けるCompanyIDフィールドがあり、dboがスキーマであると想定しています。そのようなフィールドが存在しない場合は、次のフィールドを作成して入力する必要があります。

CREATE VIEW vCompanyPersonnel AS SELECT * FROM tblCompany t1 JOIN dbPersonnel.dbo.tblPersonnel t2 ON t1.ID = t2.CompanyID

同様に、いずれかのテーブルを更新して参照整合性を維持するには、ストアドプロシージャを作成し、アプリケーションがそれらのプロシージャを使用してデータを更新できるようにする必要があります(とにかくベストプラクティスです)。また、personalテーブルのCompanyIDフィールドでnull値が許可されていないことを確認する必要があります。考慮すべきいくつかの手順:

  • 人員の追加:CustomerID入力パラメーターが必要であり、Companyテーブルに存在することを確認してください。そうでない場合は、RAISERROR。
  • 顧客の削除/非アクティブ化:関連するすべての担当者も削除/非アクティブ化します。できれば、プロセス全体をトランザクションにラップします(すべてまたは何もしない)。
于 2012-04-21T22:12:14.363 に答える