私は2つのテーブルabstractDetailsとauditAbstractDetailsを持っています。私は抽象的な(タイトル、背景、目的など)についての詳細を提出し、抽象的な詳細テーブルに値を挿入するWebフォームを持っています。更新トリガーが正しく機能しない
私は人が自分のフォームを更新して再度送信するたびに、AbstractDetailsに新しい値を入力し、AuditabstractDetailsテーブル(title、background、objective)に古い値と新しい値を入力する必要があります。 ..... 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テーブルの値(abstractDetailsテーブルの値を編集してDBから)をバックエンドから更新すると、完璧に動作しています。しかし、私はフォームを介してそれを更新し、それを提出するとき、それは両方の列(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パーツを削除しました –
Insertedに2つ以上の行が含まれていると、deleteステートメントが失敗します。これをINまたは結合に変更する必要があります。 –