2011-08-07 10 views
0

私はデータベースがdatabase_Employeeと2つのテーブルrecordsalaryと言っています。 両方のテーブルには、カラムEmpIdがあります。同じデータベースのテーブルの列を接続する方法

は何がしたいことは、私がrecordテーブルでEmpId値を更新(またはに追加)する場合で、その後、salaryEmpId列は(私がtb1EmpIdで追加するもの)に自動的に値を取得する必要があります。

私はVisual Studio 2010、.NET Framework 4.0、SQL Server Expressを使用しています。

私の質問が明確でない場合は、お知らせください。

+0

テーブルRECALORDと同じように、テーブルSALARYに行を挿入します。システム(.net || db)は、行をSALARYに挿入する必要があることをどのように知るべきですか。ちょっとヒント:たぶんあなたはSALARYテーブルが必要ないかもしれません。それはRECORDと1対1の関係にあるようです。 – home

答えて

1

このように、2つのテーブルの値を同期させたい場合は、トリガーについて考える必要があります。彼らはSQLサーバー層に入ります。この同期に関連するビジネス・ルールは存在しないように見えるので、プログラムに関係なく、データがある表から次の表に確実にコピーされます。

+0

返信ありがとうBrian ....私は同じものを探していました。トリガでグーグルをした後、私は解決策を得ました。 – Sandy

0

私はあなたが達成したいのか本当にわからないけど:オプションの

は、順番に、テーブル内の値を変更し、テーブル「記録」にDBにトリガーを削除/セットアップに挿入/更新になります"給料"。

別のオプションは、

+0

返信ありがとうございましたYahia、実際には、列の1つを変更するときに、データベース内の2つのテーブルの列を同期させたいと思っていました。私はすでに挿入/更新/削除中に両方の列を更新することを提案しました。私は同期機能を探していました。 – Sandy

0

あなたはそれを行うべきではありません...必要に応じて両方のテーブルにアクセスすることができますストアドプロシージャで...更新/挿入のために格納さprocudureを使うだろう。 EmpIdが変更できる場合は、データベースのためにrecordに新しいId列を作成する必要があります。次に、record.Idを参照する外部キー列salaryがあります。このようにsalaryにはEmpIdは必要ありません。特定のsalary列のEmpIdを取得する場合は、Id列に参加します。 EmpIdを変更する場合は、recordに変更するだけで十分です。

これは、テーブルを分離しておくことをお勧めします。別のオプションは、それらを1つのテーブルに結合することです。

EDIT:あなたが言うように、管理者がDetails行を作成し、その後、場合

:(それは完全に別の質問、私は考えさせる)この回答へのコメントに基づいて

HRが彼のAccountsデータを追加すると、Details行を作成するときにAccounts行を作成する理由はありません。人事部が最初に口座データを設定するときに行を作成します。

もう1つの解決策(既に他の人によって提案されている)は、2つのテーブルをマージすることです。それらの間に常に1:の関係がある場合、異なるテーブルにデータを保持する必要はありません。データの一部だけを見たい場合は、ビューを作成することができます。

あなたが求めているものに最も近い解決策(しかし最良の選択肢ではないかもしれません)はトリガーを使うことです。 Detailsテーブルに行が挿入されると、トリガーが発生し、Accountsテーブルに行が作成されます。

+0

返信Svickに感謝、実際に私はエンパイアを変更できません "、それは自動インクリメントに設定されています....私はちょうど削除してレコードを作成することができます(私のためにEmpIdを作成します)。私は、データベース内の2つのテーブルを同期するには – Sandy

+0

オートインクリメントの場合、どのように値を変更するのですか? – svick

+0

申し訳ありませんが、値を変更していません。テーブル – Sandy

関連する問題