0

したがって、SQLには、参照できるテーブルから新しく挿入および削除されたデータを保持するテーブルがいくつかあることがわかります。更新されたデータのようなテーブルに気づきませんでした。現在、トリガーを使用していますが、更新にトリガーを適用する必要があります。それ、どうやったら出来るの?

USE [examene]
GO
/****** Object:  Trigger [dbo].[trig1]    Script Date: 6/8/2013 6:48:26 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[trig1] on [dbo].[participari]
after insert,update,delete
as
begin
    if (exists (select * from deleted))
        rollback

    if (exists (select * from inserted,proiecte
where inserted.idpr = proiecte.idpr
and deadline<dela union 
select * from inserted,proiecte
where inserted.idpr = proiecte.idpr and inserted.panala>proiecte.deadline))
        rollback
end

これが今までの私のきっかけです

4

1 に答える 1

1

updated仮想テーブルのようなものはありません。更新が発生すると、古い値が見つかり、deleted新しい値が見つかる可能性がありますinserted

挿入および削除されたテーブルを使用する 削除されたテーブルには、DELETE およびUPDATEステートメント
中に影響を受ける行のコピーが格納されます DELETE または UPDATE ステートメントの実行中に、行はトリガー テーブルから削除され、削除されたテーブルに転送されます。

削除されたテーブルとトリガー テーブルには、通常、共通の行はありません。挿入されたテーブルには、INSERT およびUPDATEステートメント中に影響を受ける行のコピーが格納されます。挿入または更新トランザクション中に、挿入されたテーブルとトリガー テーブルの両方に新しい行が追加されます。挿入されたテーブルの行は、トリガー テーブルの新しい行のコピーです。

更新トランザクションは、削除操作の後に挿入操作が続くことに似ています。最初に古い行が削除されたテーブルにコピーされ、次に新しい行がトリガー テーブルと挿入されたテーブルにコピーされます。

于 2013-06-08T04:04:47.773 に答える