я создаю После вставки триггера, его работает нормально, но у меня есть определенные условия, прежде чем выполнять операторы внутри триггераSql Trigger После вставки обновления другой таблицы с условиями
- , основанные на различном CUSTOMERID Запустить триггер , Я хочу проверить, какой CustomerId был вставлен в мою LoyaltyDetailsTable, скажем, если последняя вставка была Customerid = 2, тогда передайте это Customerid в том случае, когда условие запустило триггер, или если Customerid = 1, тогда запустите триггер для этого Id, и так далее ,
- Я хочу проверить, есть ли в PriceClaimTable вставленный CustomerId, или нет. Если существует, то обновите информацию еще раз, просто вставьте значения только в LoyaltyDetailsTable.
Trigger запрос
CREATE TRIGGER DetailsAfterInsert ON [dbo].[LoyaltyDetailsTable]
FOR INSERT
as
UPDATE PriceClaimTable
SET CurrentPoints =
(
(SELECT SUM(LoayaltyPointsTable.Points) AS RecentPoints FROM LoayaltyPointsTable
join LoyaltyDetailsTable ON LoayaltyPointsTable.LoyaltyPointsId
= LoyaltyDetailsTable.LoyaltyPointsId
WHERE CustomerId=1 and LoyaltyDetailsId= (SELECT MAX(LoyaltyDetailsId)
AS LoyaltyDetailsTable FROM LoyaltyDetailsTable))
+
(SELECT CurrentPoints FROM PriceClaimTable WHERE ClaimCustomerId=1 and
PriceClaimId=(SELECT max(PriceClaimId) FROM PriceClaimTable
))
)
WHERE ClaimCustomerId=1 and PriceClaimId=(SELECT max(PriceClaimId) FROM PriceClaimTable)
Это моя первая попытка написать триггер, и here является структура таблицы.
Любая помощь будет отличной.
Какую часть этого вы возникли проблемы с? –
Две вещи. Сначала ваш триггер не ссылается на вставленную виртуальную таблицу. Во-вторых, это похоже на вычисляемый столбец, который будет иметь гораздо больше смысла, чем триггер. У вас никогда не будет точных данных, если вы попытаетесь сохранить баланс таким образом. В какой-то момент он выйдет из строя. –