Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 MS SQL 2008-触发器_Sql Server 2008_Tsql_Triggers - Fatal编程技术网

Sql server 2008 MS SQL 2008-触发器

Sql server 2008 MS SQL 2008-触发器,sql-server-2008,tsql,triggers,Sql Server 2008,Tsql,Triggers,我是SQL触发器新手,需要一些帮助。我有下面的更新触发器,它工作正常——当状态为“已完成”或“由错误创建”时更新CompletedDate ALTER TRIGGER [dbo].[trigger_CompletedDate] ON [dbo].[ERP_PurchaseRequest] AFTER UPDATE AS BEGIN SET NOCOUNT ON; IF (UPDATE(PRStatus)) BEGIN UPDATE pr SET Comple

我是SQL触发器新手,需要一些帮助。我有下面的更新触发器,它工作正常——当状态为“已完成”或“由错误创建”时更新CompletedDate

ALTER TRIGGER [dbo].[trigger_CompletedDate] ON [dbo].[ERP_PurchaseRequest] AFTER UPDATE
AS 
BEGIN

SET NOCOUNT ON;

    IF (UPDATE(PRStatus))
    BEGIN
        UPDATE pr SET CompletedDate = GETDATE()
            FROM  [ERP_PurchaseRequest] pr
            INNER JOIN INSERTED i ON pr.PRStatus = i.PRStatus
            WHERE (i.PRStatus = 'Completed'
                    AND pr.PRID = i.PRID)
                OR
                    (i.PRStatus = 'Created By Error'
                    AND pr.PRID = i.PRID)
    END

END
现在,我需要修改此触发器以执行以下操作:

1) 如果i.PRStatus='Completed',则更新CompletedDate,并对PRID到PRID已更新的不同表执行另一个更新查询,如:

UPDATE Table1 SET Column1 = 'Yes" Where PRID = i.PRID (from the inserted table)
2) ElseIf i.PRStatus='Created By Error',然后只更新CompletedDate

如果可能,请提供示例代码。谢谢


谢谢你,

你的问题并没有明确说明你在这里到底想要实现什么,你也没有展示出你试图让它发挥作用的任何东西。我会尽我最大的努力弄清楚你来这里干什么,但我没有所有的信息。无论如何,给你。让我们知道它是否有效

IF OBJECT_ID('ERP_PurchaseRequest') IS NULL
CREATE TABLE ERP_PurchaseRequest (
    PRID INT,
    PRStatus VARCHAR(255),
    CompletedDate DATETIME)
GO
IF OBJECT_ID('OtherTable') IS NULL
CREATE TABLE OtherTable (
    PRID INT,
    Column1 VARCHAR(50))
GO


CREATE TRIGGER [dbo].[trigger_CompletedDate] ON ERP_PurchaseRequest AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    IF (UPDATE(PRStatus))
    BEGIN
        UPDATE pr SET CompletedDate = GETDATE()
        FROM  ERP_PurchaseRequest pr
        INNER JOIN inserted i ON pr.PRID = i.PRID
            AND pr.PRStatus = i.PRStatus
        WHERE i.PRStatus IN ('Completed', 'Created By Error')

        UPDATE ot SET Column1 = 'Yes'
        FROM OtherTable ot
        INNER JOIN inserted i on i.PRID = ot.PRID
        WHERE I.PRStatus = 'Completed'
    END
END

你试过什么?什么不起作用?为什么不起作用?我不知道当更新加入到插入的表中时如何分离它。我找到了解决方法。谢谢@David。真管用!澄清:正如你在一开始提到的,我是个新手。我从另一个线程学到的使用插入表的更新/连接技术。我确实试过,但实际上卡住了,这就是我来这里寻求帮助的原因。我不会不尝试就发帖子。无论如何,再次谢谢你。