如何根据时间动态更新代理作业列

时间:2014-07-21 10:23:41

标签: sql-server dynamic sql-update sql-agent-job

我需要根据其他记录更新字段。我使用SQL Server。 在我的数据库中有两个表。

create table product(
    IDproduct int primary key,
    numberA int default 0,
    numberB int default 0)

create table production(
    IDproduct int primary key,
    start datetime not null,
    duration time(7) not null,
    columnName varchar(32) not null)

我需要在其(开始+持续时间)< = getdate()时增加产品的字段编号A或编号B.在productionName of production中,有要更新的列的名称(numberA或numberB)。最后,我删除了生产中的记录。

这是我当前的代码,但我只更新了列号A:

SET XACT_ABORT ON;

DECLARE @ProducedProducts TABLE(
    IDproduct int
);

BEGIN TRY

    BEGIN TRAN;

    DELETE FROM PRODUCTION
    OUTPUT deleted.IDproduction INTO @ProducedProducts
    WHERE DATEADD(second, 
              datepart(hour,duration) * 3600 + 
              datepart(minute,duration) * 60 + 
              datepart(second,duration),
              start) <= GETDATE();

    UPDATE PRODUCT
    SET numberA += 1
    WHERE IDproduct IN(
        SELECT pp.IDproduct
        FROM @ProducedProducts AS pp
    );

    COMMIT;

END TRY
BEGIN CATCH

    THROW;

END CATCH;

1 个答案:

答案 0 :(得分:0)

您可以拥有多个作业代理以更新每列。通过这种方式,您无需动态工作。