2016-09-28 81 views
0

我有兩個表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 
---------------------------------------------------------------------------- 

需要幫助

+0

你觸發刪除插入的值,並再次做同樣的,它只是僅適用於更新部分,也即當只有單值從什麼是插入,更新部分 – TheGameiswar

+0

我最終的結果inserted..please更新的問題返回已刪除插入的部分 –

+1

當插入包含多於1行時,您的刪除語句將失敗。您應該將其更改爲IN或聯接。 –

回答

0

這聽起來像問題不動了扳機,但與任何的儲蓄數據。如果它從SQL Server按照需要運行,但在UI進行調用時失敗,那麼您需要檢查UI以查看發生了什麼。 UI很可能不止一次地更新記錄。我會通過刪除觸發器的delete部分並查看最終在審計表中找到多少行來測試此操作。