qulaitks Ответов: 2

Sql триггер обновление второй таблицы


Я пытаюсь создать триггер для обновления второй таблицы, но он не работает.

Что я уже пробовал:

CREATE trigger [dbo].[Report_Update] on [dbo].[SellTable] 
AFTER UPDATE AS
BEGIN
  
    IF UPDATE(TransType) BEGIN
    UPDATE ReportTable
    SET    ReportTable.TransType = inserted.TransType
    FROM   SellTable
     INNER JOIN Inserted ON SellTable.TransID = Inserted.TransID
	
	
    End

	IF UPDATE(Quantity) BEGIN
    UPDATE ReportTable
    SET    ReportTable.TransType = inserted.Quantity
    FROM   SellTable
    INNER JOIN Inserted ON SellTable.TransID = Inserted.TransID
	
    End

	IF UPDATE(Price) BEGIN
    UPDATE ReportTable
    SET    ReportTable.TransType = inserted.Price
    FROM   SellTable
    INNER JOIN Inserted ON SellTable.TransID = Inserted.TransID
    End

	IF UPDATE(Cost) BEGIN
    UPDATE ReportTable
    SET    ReportTable.TransType = inserted.Cost
    FROM   SellTable
 INNER JOIN Inserted ON SellTable.TransID = Inserted.TransID
	End

     
END

Santosh kumar Pithani

Здравствуйте,Ваше обновление всех записей для "ReportTable" основано на обновленных столбцах "SellTable", я надеюсь, что нет никаких дополнительных запросов, которые должны быть завершены в одной строке

2 Ответов

Рейтинг:
2

Richard Deeming

Цитата:
UPDATE ReportTable
SET    ReportTable.TransType = inserted.TransType
FROM   SellTable
INNER JOIN Inserted ON SellTable.TransID = Inserted.TransID
Вы обновляетесь каждый запись в журнале ReportTable таблица с одним случайным значением из обновленных записей.

Существует ли, по - видимому, связь между записями в этих двух таблицах? Вам нужно будет ограничить количество записей, которые вы обновляете на основе этого объединения.
UPDATE
    ReportTable
SET
    TransType = inserted.TransType
FROM
    ReportTable
    INNER JOIN inserted
    ON inserted.??? = ReportTable.???
;


Рейтинг:
0

phil.o

Вы, кажется, обновляете одно и то же поле зрения. ReportTable для различных областей применения SellTable.
Разве ты не должен писать

SET    ReportTable.Quantity = inserted.Quantity
,
SET    ReportTable.Price = inserted.Price
и
SET    ReportTable.Cost = inserted.Cost
вместо этого?