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