我有一点奇怪的情况,我正在努力填充表格中的字段。我还应该提到我对 SQL Server 很陌生。
正在使用什么:我正在使用 SQL Server 2008 数据库。有两个关注表PO_APPROVAL_LOG
, 和PO_HDR
。
此处执行的过程是创建新的采购订单。在某些情况下,创建采购订单需要经理批准。我正在使用针对 Active Directory 对经理进行身份验证的 winform (C#),如果经理是某个组的成员,则批准 PO。
我的情况:正在使用第 3 方应用程序,我正在编写一些验证代码(上面提到过),这些代码在应用程序中发生保存事件之前执行。如果满足某些条件,我的验证码会返回TRUE
并允许应用程序继续保存。当保存开始时,数据库中的一些表被插入,包括PO_HDR
. 我无法更改事件发生的顺序,我只能编写这些验证规则。应用程序将不会继续,直到它从我的代码中接收到一个SUCCESS
属性设置为TRUE
or的特定对象FALSE
。
我遇到的问题PO_APPROVAL_LOG
与将 PO 批准记录到表中有关。现在,该PO_APPROVAL_LOG
表被插入到经理提交其凭据的时间。这发生在PO_HDR
填充之前。我需要包含PO_HDR.PO_NUMBER
,为了做到这一点,我需要等到PO_HDR
填充之后,然后获取PO_NUMBER
值,然后更新相应的PO_APPROVAL_LOG
条目。很少有 PO 实际需要批准,PO_APPROVAL_LOG
表格不应该有很多动作。
我无法在PO_HDR
表上创建触发器。
为了进行实验,我在使用 a时创建了一个AFTER INSERT
触发器,以查看是否可以在有机会填充之后获取。(是的,我确实知道在触发器中是一个糟糕的主意,它只是在游戏数据库中进行实验)。这不起作用,因为直到插入和后续触发器执行完成后,应用程序才从我的验证代码中得到响应。PO_APPROVA_LOG
waitfor delay
PO_NUMBER
PO_HDR
waitfor delay
TRUE
我的问题:SQL 代理工作可能是一种解决方案吗?它需要每隔一两分钟运行一次。我担心的一个问题是,这会对数据库造成很大负担吗?如果作业运行并确定是否应该调用一个过程来更新日志表(在 中找到一个或多个NULL
PO_NUMBER
值PO_APPROVAL_LOG
),那么这可能会起作用。
还有什么建议吗?这给我带来了一段时间的麻烦。
如果其中任何一个不清楚,请询问!谢谢!