我有一个数据库说database_Employee
有2个表,record
和salary
。
现在两个表都有一列EmpId
。
我想要的是当我在EmpId
表中更新(或添加)record
值时,EmpId
的{{1}}列应自动获取值(我添加了salary
的{{1}}。
我正在使用Visual Studio 2010,.NET Framework 4.0,SQL Server Express。
如果我的问题不明确,请告诉我。
答案 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
数据,那么在您创建时,没有理由创建Accounts
行Details
行。 HR首次设置帐户数据时创建行。
另一种解决方案(已经由其他人提出)是合并两个表。如果它们之间始终存在1:关系,则无需将数据保存在不同的表中。如果您只想查看部分数据,则可以创建视图。
另一种最接近您要求的解决方案(但可能不是最佳选择)是使用触发器。当一行插入Details
表时,会触发一个触发器并在Accounts
表中创建一行。