【问题标题】:Using SQL Server Trigger for updating old rows on Insert使用 SQL Server 触发器更新插入时的旧行
【发布时间】:2012-07-30 18:20:27
【问题描述】:

我有一个包含所有用户帐户详细信息的用户表,包括一个具有位数据类型的 IsLoggedIn 字段。当用户在前一个会话到期之前启动新会话时,我想用 IsLoggedIn = 1 更新任何旧行。实现这一目标的最佳方法是什么?用触发器可以做到这一点吗?

提前谢谢..

【问题讨论】:

    标签: asp.net sql-server entity-framework-4


    【解决方案1】:

    你肯定有两件事.. 1) 用户 ID 和 2) 数据库中的会话 ID。

    现在当新的会话开始 (session_Start) 事件被触发时..你可以调用一个带有逻辑的存储过程,逻辑将是

    1) 如果没有具有相同用户 ID 的记录,则不要进行任何更新。 2)如果有任何具有相同用户ID的记录,则将它们全部更新为IsLoggedIn = 1。

    您也可以使用 TRIGGER 扩展此逻辑并根据需要对其进行绑定。

    基本上你需要跟踪 session_Start 事件并执行数据库操作。

    【讨论】:

    • 所以在我的情况下 session_Start 比触发器更好,不是吗?
    【解决方案2】:

    触发器不是建议的解决方案,因为您需要从 UI 处理登录。如果只有一次登录,则可以使用Application_Start。如果可以有多个登录,那么Session_Start 更可取。从那里您可以调用数据库并执行相应的操作。
    两者的区别在:http://forums.asp.net/t/1230163.aspx/1?What+s+the+difference+between+Application_Start+and+Session_Start+in+Global+aspx+

    【讨论】:

      猜你喜欢
      • 2015-11-06
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      相关资源
      最近更新 更多