我有一個插入語句在內部觸發器上執行,但插入語句插入到ItemLookups中的值來自ItemsProduced a,它確實存在,而不是更新a.Casecount並只插入where它不存在。我在哪裏將我的更新和設置命令合併到這個查詢中?任何建議?感謝您的任何幫助。從連接插入並選擇最後一行
USE [**]
GO
/****** Object: Trigger [dbo].[spItemLookupNActuals] Script Date: 09/18/2014 14:30:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- =============================================
ALTER TRIGGER [dbo].[spItemLookupNActuals]
ON [dbo].[ItemsProduced]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO dbo.itemlookup
(
itemnumber,
cases,
[Description],
[Type],
wic,
elc,
totalelc,
lbspercase,
totallbs,
peoplerequired,
schedulehours,
rated,
capacity,
shift,
[DateTime],
[TimeStamp]
)
SELECT TOP 1
a.itemnumber,
a.casecount,
b.itemdescription,
b.divisioncode,
b.workcenter,
b.laborpercase,
a.casecount* b.laborpercase* c.ipcg,
b.lbspercase,
b.lbspercase* a.casecount,
b.personsreqd,
d.schedhours,
b.poundrating,
b.poundrating*d.schedhours,
a.shift,
a.datetime,
a.timestamp
FROM itemsproduced a
INNER JOIN masteritemlist b
ON a.itemnumber = b.itemnumber
CROSS apply
(
SELECT TOP 1
*
FROM itemmultipliers2 c
WHERE c.datetime = a.datetime
ORDER BY c.timestamp DESC)c
CROSS apply
(
SELECT TOP 1
*
FROM itemactuals d
WHERE d.datetime =a.datetime
AND d.wc = b.workcenter
AND d.shift= a.shift
ORDER BY d.timestamp DESC) d
WHERE NOT EXISTS
(
SELECT *
FROM itemlookup
WHERE itemnumber =a.itemnumber
AND shift=a.shift
AND datetime = a.datetime)
end
可能會將插入/更新/刪除的觸發器拆分爲單獨的觸發器,因此您並未試圖包含剛刪除的記錄或插入剛更新的記錄? – 2014-09-19 12:30:14