1
CREATE TRIGGER [dbo].[trgAfterDelete12] ON dbo.[project_employee] 
AFTER DELETE
AS

    declare @empname varchar(25);
    declare @emp_password varchar(25);
    declare @emp_username varchar(25);
    declare @audit_action varchar(50);

    select @empname=d.Emp_Name from deleted d;  
    select @emp_password=d.Emp_Password from deleted d; 
    select @emp_username=d.Emp_username from deleted d; 
    set @audit_action=' This employee record has been  deleted ';   

    insert into project_employee_audit(Emp_name,Emp_username,Emp_password,action,update_date) 
    values(@empname,@emp_username,@emp_password,@audit_action,getdate());

    PRINT 'AFTER DELETE Trigger fired.'
GO

これは既に作成されたトリガー スクリプトです。再度実行しようとすると、「スカラー変数を宣言する必要があります。スクリプトの問題点を教えてください。初めて OK だったのに、なぜそうなのかというエラーが表示されます。このエラーメッセージが表示されますか?

4

1 に答える 1

2

次のようにする必要があります。

CREATE TRIGGER [dbo].[trgAfterDelete12] ON dbo.[project_employee] 
AFTER DELETE
AS

insert into project_employee_audit(Emp_name,Emp_username,Emp_password,action,update_date) 
select Emp_Name,Emp_username,Emp_Password,'This employee record has been  deleted ',getdate()
from deleted

は疑似テーブルであるためdeleted、複数の行を含めることができます (または行を含まない)。スカラー変数への個別の割り当てが同じ (任意の) 行から一貫して値を取得するという保証さえありません

于 2013-10-23T06:12:28.623 に答える