Как динамически обновлять столбец с помощью задания агента в зависимости от времени

Мне нужно обновить поле в зависимости от другой записи. Я использую 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)

Мне нужно увеличить поле numberA или numberB продукта, когда его (start+duration)‹=getdate(). В поле columnName производства указано имя столбца для обновления (номер A или номер B). Наконец я удаляю запись в производстве.

Это мой текущий код, но я обновляю только номер столбца 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;

person Deca    schedule 21.07.2014    source источник


Ответы (1)


У вас может быть несколько агентов заданий для обновления каждого столбца. Таким образом, вам не нужна динамическая работа.

person mehdi lotfi    schedule 21.07.2014