这是我的情景:
用户输入日期范围。存储过程运行,根据日期填充其他表。然后,用户可以单击按钮查看这些表(从表中选择的另一个SP)。
问题:
有多个用户。每个用户都需要能够拥有自己的表,可以这么说,因为日期范围可能不同。现在,用户1运行SP,为日期A和B填充表。然后用户2运行SP,为日期C和D填充表。现在用户1前进并单击查看按钮,期望日期A和B的数据但是会发生什么是C和D的数据显示,因为运行SP的最后一个用户使用日期C和D.
如何为每个用户保持数据分离/本地?
感谢。
答案 0 :(得分:2)
如果确实需要存储查询结果,则需要在用户上键入结果集,或者每次用户运行报告时生成方案ID。
最简单的方法是将查询作为报告运行,而不是存储结果。重新计算输出,并在每次用户运行报告时将其转储(即不要 存储结果)。
如果您确实需要存储结果和,则每个用户只需要在任何给定时间使用一个日期范围,然后可以使用用户ID对表进行注释。
如果用户可以使用多个方案,则需要有另一个控制表,其中包含每个用户的方案。当用户进行运行时,将生成新的方案ID。您将需要一个屏幕,以允许用户在这种情况下选择场景,并可能需要一些清除过时的场景。
答案 1 :(得分:0)
您可以向表中再添加一列,然后在使用数据填充它时,将会话变量/用户ID添加到此列。
然后需要更新从该表中选择的查询以选择会话变量/用户ID匹配的位置。
答案 2 :(得分:0)
听起来每次都要删除整个表,而只是尝试删除运行查询的用户的数据。在SELECT上使用WHERE子句,以便每个用户只能看到自己的数据。这意味着您需要存储每行数据的用户名/ ID。
答案 3 :(得分:0)
考虑使用每个添加的值存储用户ID,然后在所有查询中传入用户ID。这样你可以使用1个表和1个存储过程。
因此,如果用户A运行存储过程,它将添加记录A-1A,A-2A。 当用户B运行存储过程时,它将添加记录B-1B,B-2B,B-3B等。
单击视图按钮时,只需再次调用第二个存储过程,然后再返回该用户ID。