我有兩個表abstractDetails和auditAbstractDetails。我有一個Web表單,從一個人提交有關抽象(標題,背景,目標等)的詳細信息,並將值插入到abstractDetails表中。更新觸發工作不正常
現在我寫了一個觸發器,所以無論何時一個人更新他的表單並再次提交,它應該將新值填充到abstractDetails中,以及它應該填充AuditabstractDetails表中的舊值和新值(標題,背景,目標..... auditTitle,auditBackground .....)
舊值應在列標題AuditabstractDetails表存儲,背景等,以及新的值將被列auditTitle,auditBackground等)下保存
這裏是我的觸發器:
USE [Abstract]
GO
/****** Object: Trigger [dbo].[trgAuditabstractDetails] Script Date: 09/28/2016 11:45:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[trgAuditabstractDetails]
ON [dbo].[abstractDetails]
FOR UPDATE
AS
BEGIN
SET NOCOUNT ON
delete from AuditabstractDetails where Id IN (SELECT I.Id
FROM Inserted I);
insert into AuditabstractDetails(Id, abstractInfoId, title, background,
objective, design, result, Audittitle, Auditbackground,
Auditobjective, Auditdesign, Auditresult)
-- case 1: ID unchanged
SELECT I.Id, I.abstractInfoId, D.title, D.background, D.objective,
D.design, D.result,
I.title, I.background, I.objective, I.design, I.result
FROM Inserted I
JOIN Deleted D on I.Id=D.Id;
END
GO
在此之後,當我(通過編輯abstractDetails表中的值從DB)更新從後端的abstractDetails表格形式(標題,背景等)的值,它是工作完美。但是,當我通過表單更新它並提交它時,它正在更新兩個列(title,auditTitle等)中的新值。它不會將舊值存儲在特定列中,而是將新值存儲在兩列中。
abstractDetails table
===========================================
Id |title | background | Result
-------------------------------------------
1 Abs1 backAbs2 resAbs2
2 Abs2 backAbs2 resAbs2
-------------------------------------------
Expected Result:
AuditabstractDetails table
===============================================
Id |title | background | Result | AuditTitle | auditBackground |auditResult
----------------------------------------------------------------------------
1 Abs1 backAbs2 resAbs2 Audit1 auditback1 auditres1
2 Abs2 backAbs2 resAbs2 Audit2 auditback2 auditres2
----------------------------------------------------------------------------
ActualResult:
AuditabstractDetails table
===============================================
Id |title | background | Result | AuditTitle | auditBackground |auditResult
----------------------------------------------------------------------------
1 Audit1 auditback1 auditres1 Audit1 auditback1 auditres1
2 Audit2 auditback2 auditres2 Audit2 auditback2 auditres2
----------------------------------------------------------------------------
需要幫助
你觸發刪除插入的值,並再次做同樣的,它只是僅適用於更新部分,也即當只有單值從什麼是插入,更新部分 – TheGameiswar
我最終的結果inserted..please更新的問題返回已刪除插入的部分 –
當插入包含多於1行時,您的刪除語句將失敗。您應該將其更改爲IN或聯接。 –