插入后15秒自动更新SQL Server表中的字段

问题描述:

我有点奇怪的情况,并且我在填充表中的字段时感到很困难。我还应该提到我对SQL Server非常陌生。插入后15秒自动更新SQL Server表中的字段

什么在使用:我正在SQL Server 2008数据库中工作。有两个关注表,PO_APPROVAL_LOGPO_HDR

此处执行的过程是创建新的采购订单。在某些情况下,需要经理批准才能创建采购订单。如果管理员是特定组的成员,PO已被批准,我正在使用一个winform(C#)来对Active Directory进行身份验证。

我的情况:有一个第三方应用程序正在使用,并且我正在编写一些验证代码(上面提到的),它会在应用程序中发生保存事件之前执行。如果符合某些标准,我的验证码将返回TRUE,并允许应用程序继续保存。当保存启动时,将插入数据库中的一些表格,包括PO_HDR。我无法改变事件发生的顺序,我只能写这些验证规则。该应用程序将不会继续,直到它从SUCCESS属性设置为TRUEFALSE的代码收回特定对象。

问题我遇到的问题涉及将采购订单批准登录到PO_APPROVAL_LOG表中。现在,PO_APPROVAL_LOG表被插入到管理者提交他们的凭证时。这发生在填充PO_HDR之前。我需要包含PO_HDR.PO_NUMBER,为了做到这一点,我需要等到PO_HDR填充后,并抓住PO_NUMBER值,并更新相应的PO_APPROVAL_LOG条目。很少的采购订单实际上需要批准,PO_APPROVAL_LOG表不应该看到很多操作。

我无法在PO_HDR表上创建触发器。

为了实验的缘故,我打了创建一个AFTER INSERT触发PO_APPROVA_LOG是使用waitfor delay,看看我是否能获取PO_NUMBERPO_HDR有机会填充后。 (是的,我知道waitfor delay在触发器中是一个可怕的的想法,它只是在一个播放数据库中进行实验)。这是行不通的,因为在插入和后续触发器执行完成之前,应用程序没有得到我的验证代码TRUE的响应。

我的问题:SQL代理作业可能是一种可行的解决方案吗?它需要每分钟或两分钟运行一次。我的担心之一是,这是否会对数据库造成严重的负担?如果作业运行并确定是否应该调用过程来更新日志表(在PO_APPROVAL_LOG中找到一个或多个NULLPO_NUMBER值),那么可能会有效。

其他建议?这一直给我带来麻烦。

如果有任何不清楚的地方,请询问!谢谢!

+0

只读通过这几次。我很少会打电话给一个帖子_详细详细 - 你能解释为什么你想要更新发生(确切地说?)15秒后插入?另外,是否通过存储过程访问所有内容? – 2012-02-09 19:03:18

+0

@Norla,我对此并不十分清楚,对不起。更新只需在PO_HDR填充后发生。它需要应用程序(大致)10-15秒来更新数据库。另外,是的,据我所知,一切都是通过程序访问的。 – Dan 2012-02-09 20:01:01

+0

最终结果:这只是简单的混乱。记录要求最终发生变化。 – Dan 2012-02-24 21:51:35

在sql中没有办法做到这一点,请尝试从您的代码执行此操作。

+1

如果你相信你可以做任何事情。 – 2012-02-09 19:00:34

这将是一个有点迂回的,并且可能不符合你的设置...

当您从PO_APPROVAL_LOG表收集数据,通过,加入此表的视图或存储过程这样做到PO_HDR。检查PO_HDR是否已更新 - 如果没有,请不要返回PO_APPROVAL_LOG行。

使用此设置,您永远不会实际更新PO_APPROVAL_LOG表。 (奖金,国际海事组织)