0
我遇到了下面的觸發器問題。我認爲這個問題是一次將多行添加到數據庫的時候。而不是插入子查詢返回的值超過1個值
它需要爲插入的n *行工作。
什麼代碼是爲了做的是在插入檢查ESHID列VS另一個表中的ID後4個字符
開始所以如果有一個匹配,並且isPersonalised是0,那麼我需要設置的地位3否則它應該保持原來的FulfilmentStatus。
ALTER TRIGGER [dbo].[setStatus]
ON [dbo].[ESH_OrderLine]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO ESH_OrderLine(
OrderID,
ESHID,
ESHVersion,
GBPPrice,
Currency,
FulfilmentStatus,
FulfilmentDate
)SELECT
OrderID,
ESHID,
ESHVersion,
GBPPrice,
Currency,
(
SELECT "Status" =
CASE
WHEN isPersonalised = 1 THEN '0' --PERSONALISED CD
ELSE '3' -- NON PERSONALISED CD
END
FROM KSAT_CDs
WHERE ID= SUBSTRING((
SELECT ESHID FROM INSERTED
WHERE ESHID like 'PHZB%'
),5,10)
UNION
SELECT "Status" =
CASE
WHEN ESHID = 'PNP' THEN '0' --POSTAGE AND PACKING
ELSE '4' --DOWNLOAD
END
FROM INSERTED
WHERE ESHID NOT LIKE 'PHZB%'
) as FulfilmentStatus,
FulfilmentDate
FROM
INSERTED
END