SQLデータベースでこの削除トリガーを使用しています。レコードは現在削除され、監査テーブルに書き込まれます。この履歴テーブルに、SurveyIDに基づいて削除されるレコードに関連する別のテーブルのフィールドを含めるように求められました。トリガーを削除して別のテーブルからフィールドを取得する
select @Status = Status from table where Survey = deleted.Survey
これは誤った構文です。
ALTER trigger [dbo].[table_Selfdelete]
on [dbo].[table]
after delete
as
Begin
Set nocount on;
Declare @SurveyId int
Declare @StudentUIC varchar(10)
Declare @Status varchar(10)
select @SurveyId = deleted.SurveyID,
@StudentUIC = deleted.StudentUIC
from deleted
select @Status = Status from tbly when SurveyID = deleted.SurveyID
insert into fupSurveyAudit
values(@SurveyId,@StudentUIC,@Status)
End
複数の行を削除するとどうなりますか? – DVT
これまでに投稿された3つの回答は、DVTが指摘している重要な点を強調していませんが、すべて修正しています。 *文*ごとに1回トリガされるので、 'deleted'には0,1または* multiple *の行が含まれます。スカラー変数に 'deleted 'の値を代入するのは、あなたがここで行うように、他の行を無視する*ため、常に間違いです。 –