我有两个表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或联接。 –