我需要根据其他记录更新字段。我使用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;
答案 0 :(得分:0)
您可以拥有多个作业代理以更新每列。通过这种方式,您无需动态工作。