如何连接同一数据库的表的列

时间:2011-08-07 13:39:39

标签: .net sql sql-update

我有一个数据库说database_Employee有2个表,recordsalary。 现在两个表都有一列EmpId

我想要的是当我在EmpId表中更新(或添加)record值时,EmpId的{​​{1}}列应自动获取值(我添加了salary的{​​{1}}。

我正在使用Visual Studio 2010,.NET Framework 4.0,SQL Server Express。

如果我的问题不明确,请告诉我。

3 个答案:

答案 0 :(得分:1)

对于这样的事情,你想要保持两个表值同步,你应该考虑触发器。他们会进入SQL服务器层。由于似乎没有与此同步关联的任何业务规则,因此无论程序如何,触发器都将确保将数据从一个表复制到下一个表。

答案 1 :(得分:0)

我不确定你想要达到的目的但是:

on选项是在表“记录”上的数据库中设置插入/更新/删除触发器,后者又会更改表“salary”中的值。

另一种选择是使用存储过程的存储过程...在存储过程中可以根据需要访问两个表...

答案 2 :(得分:0)

你不应该这样做。如果EmpId可以更改,则应在Id中创建一个新的record列,仅用于数据库。然后,您在salary中有一个引用此record.Id的外键列。这种方式salary不需要EmpId。如果您想获得某个EmpId列的salary,请加入Id列。如果您想更改EmpId,只需在record上进行更改,这就足够了。

这假设您有充分的理由将表格分开。另一种选择是将它们组合成一个表。

修改

根据对此答案的评论(我认为这是一个完全不同的问题):

正如您所说,经理会创建Details行,之后,HR会添加他的Accounts数据,那么在您创建时,没有理由创建AccountsDetails行。 HR首次设置帐户数据时创建行。

另一种解决方案(已经由其他人提出)是合并两个表。如果它们之间始终存在1:关系,则无需将数据保存在不同的表中。如果您只想查看部分数据,则可以创建视图。

另一种最接近您要求的解决方案(但可能不是最佳选择)是使用触发器。当一行插入Details表时,会触发一个触发器并在Accounts表中创建一行。