2014-07-21 1 views
0

다른 레코드에 따라 필드를 업데이트해야합니다. 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() 제품의 필드 numberA 또는 numberB를 증가해야합니다. 생산의 columnName에는 업데이트 할 열의 이름 (numberA 또는 numberB)이 있습니다. 마지막으로 생산에서 레코드를 삭제합니다.

이 내 현재 코드,하지만 난 단지 열 numberA 업데이트 :

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; 

답변

0

당신은 각 열을 업데이트하기 위해 여러 작업 에이전트를 가질 수 있습니다. 이런 식으로 당신은 역동적 인 일을 할 필요가 없습니다.

관련 문제