【问题标题】:Use the same sql Server table to do different updates, is there a way to do that?使用同一个sql Server表做不同的更新,有没有办法呢?
【发布时间】:2013-08-26 10:24:44
【问题描述】:

我在我的数据库中使用 Asp.net (VB.net):

  • 有一张名为(Trade)的表,该表的相同行被3个不同的用户使用,这些用户可以对该表进行不同的更新,他们应该看到该表的基本信息(我指的是基础,在表格(交易)更新之前)
  • 问题出在第一个用户想要修改表格的行时,第二个第三个用户看不到任何基本信息更多,如果他们决定更改或更新某些数据,第一个将丢失他更新的行..

每次用户对表进行更新时,数据都会被覆盖。

我想要的是知道是否有办法为 3 个用户创建一个表的副本或图像,并且每个用户都可以正常更新,而无需创建具有相同行的同一个表 3 次??!

更新 我的表结构是:Trade(trName, Carrier, POl, POD, Vgp, Qgp) 没有主键..

谢谢你..

【问题讨论】:

  • 您的问题可以通过在表中添加UserId 列来解决...

标签: asp.net sql-server vb.net sql-server-2008


【解决方案1】:

您的问题的解决方案可能是原始表格的两个副本。始终向用户显示原始表格作为初始数据。并且在第二个表中始终保持更新的数据。现在技巧来维护日志,因为您必须维护日志表,该表将包含原始表的所有字段以及一个附加列“UserId”,这将具有更改了用户的 ID价值。现在每次更新数据之前,将其复制到日志表中。如果这适合您的需要,请发布您的表格字段,然后我们可以在表格结构上进行锻炼。

【讨论】:

  • 我认为这个解决方案可以解决我的问题,我会更新我的问题并发布我的表格字段..
  • Trade(trName, Carrier, POl, POD, Vgp, Qgp) - 原始表 Trade_Updated(RowId(primaryKey),trName,Carrier, POl, POD,Vgp, Ogp) - 最新数据 ChangeLog(UserId , RowId, oldTrName,oldCarrier,oldPol,oldPOD,oldVgp,oldQgp) - 这里的关键是找到变化,所以你可以再添加两个列。字段更新,新值。比如用户修改了POD值,那么FieldUpdated列就会有POD,而POD的NewValue就会在NewValue列中。
  • 您能否通过查询向我解释一下,我的意思是一开始我将为所有用户做(从交易中选择*),我将创建与交易相同的列以及RowId 称为 trade_updated,如果用户想要更新某些行,查询将是(插入 trade_updated 值..)而不是(更新)和(插入 ChangeLog 值..)带有 rows_Id 和 User_Id ..你能给我的查询示例..?
  • 我说的对吗..?查询应该这样开始?你能解释一下查询应该是什么样子吗?
  • 对不起@tollamie,我今天还不能发布。以下是查询(可能需要检查语法)。假设您已复制 trade_updated 中的数据。现在用户已触发查询以通过您的应用程序更新记录。在触发查询更新 trade_updated(....) 之前。运行查询.. 插入 ChangeLog(userId,col1,col2,col3,...,Updated Column Name,new Value)。这里假设用户一次只更新一个值。
猜你喜欢
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 2014-10-19
  • 1970-01-01
  • 2020-07-08
相关资源
最近更新 更多