2011-08-07 41 views
0

我有一個數據庫,說database_Employee有2個表,recordsalary。 現在這兩個表都有一列EmpId如何表列連接同一數據庫的

我想,當我更新(或增加)在recordEmpId值,那麼salaryEmpId列應自動獲得的值(我在的tb1EmpId添加)。

我使用Visual Studio 2010,.NET Framework 4.0中,SQL Server Express的。

如果我的問題是不明確的,讓我知道。

+0

您在表SALARY中插入一行,與表RECORD相同。系統(.net || db)應該如何知道它必須在SALARY中插入一行。只是一個提示:也許你不需要SALARY表,它似乎是1:1的關係,以記錄... – home

回答

1

這樣的事情,要保持同步兩個表的值,你應該想想觸發器。他們會進入SQL服務器層。由於似乎沒有任何與此同步相關的業務規則,觸發器將確保將數據從一個表複製到下一個表,而不管程序如何。

+0

感謝您的答覆布賴恩....我一直在尋找同樣的。經過一些Google觸發器搜索後,我得到了解決方案。 – Sandy

0

我真的不知道你想實現什麼,但:

的辦法是設置一個插入/更新/在桌子上「記錄」,從而在表更改值DB刪除觸發器「薪水」。

另一種選擇是使用存儲procudure的更新/插入...在存儲過程中可以根據需要訪問這兩個表...

+0

感謝Yahia的回覆,實際上我希望我的數據庫中的2個表的列在更改某列時同步。我已經建議你在插入/更新/刪除時更新兩列。但我正在尋找一個同步功能。 – Sandy

0

你不應該這樣做。如果EmpId可以更改,則應在record中爲數據庫創建一個新的Id列。然後在salary中有一個外鍵列,其中引用了record.Id。這種方式salary不需要EmpId。如果您想獲得某個salary列的EmpId列,請加入Id列。如果你想改變EmpId,只需更改它在record,這就夠了。

這裏假設你有一個很好的理由來保持桌分開。另一種選擇是將它們組合成一個表格。

編輯:

基於這個答案評論(這使它成爲一個完全不同的問題,我認爲):

如果像你說的,經理創建Details行和之後,HR增加了他的Accounts數據,那麼就沒有任何理由在創建Details行創建Accounts行。 HR首次設置帳戶數據時創建該行。

另一種解決方案(已經被人提出的)是合併兩個表。如果他們之間始終有1:關係,則不需要將數據保存在不同的表中。如果您只想看一部分數據,則可以創建視圖。

又一解決方案,其中最接近你的要求(但未必是最好的選擇)是使用觸發器。當一行插入Details表中時,會觸發一個觸發器,並在Accounts表中創建一行。

+0

謝謝你的答覆Svick,其實我不能改變EmpId「,它被設置爲自動遞增....我可以刪除並創建記錄(這反過來爲我創建EmpId)。我認爲觸發器是去我同意數據庫中的2個表格 – Sandy

+0

@user,如果它是自動增量,你怎麼改變它的值!? – svick

+0

對不起,但我沒有改變它的值,我只是想讓自動增量值自動與其他值同步表 – Sandy

相關問題