我有以下触发器:
Alter trigger [dbo].[EmployeeLearningNeedsDeleteAuditTrigger]
on [dbo].[EmployeeLearningNeeds]
after delete
...
出于某种原因,SQL Management Studio 将此波浪线为错误,指出:
无法创建"而不是删除"触发器 [DBO]。[EmployeeLearningNeedsDeleteAuditTrigger] on [dbo]。[员工学习需求]。这是因为表具有具有级联删除的外键。
我不明白的是,这不是"而不是删除",而是"删除后",那么为什么它会引发这样的错误?
以防万一相关,我已经包含了触发器的内容:
as
DECLARE @Count int;
select @Count = @@ROWCOUNT;
set nocount on;
if @Count > 0
begin
declare @RowId int;
declare @Value varchar(max);
select @RowId=RecordId from deleted;
select @Value=CONVERT(varchar, (select RecordId from deleted));
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'RecordId', @Value, '';
select @Value=RTRIM(surname)+', '+RTRIM(forename1)+' '+RTRIM(forename2) from employee where emp_no=(select EmployeeId from deleted);
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'EmployeeName', @Value, '';
select @Value=CONVERT(varchar, (select TrainingEventId from deleted));
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'TrainingEventId', @Value, '';
select @Value=[Description] from TrainingEventPart where RecordId=(select TrainingEventPartId from deleted);
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'TrainingEventPart', @Value, '';
select @Value=NeedDescription from deleted;
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'NeedDescription', @Value, '';
select @Value=CONVERT(varchar, (select TargetDate from deleted), 103);
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'TargetDate', @Value, '';
select @Value=CONVERT(varchar, (select DateAchieved from deleted), 103);
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'DateAchieved', @Value, '';
select @Value=[Description] from LearningNeedPriority where Code=(select [Priority] from deleted);
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'Priority', @Value, '';
select @Value=CONVERT(varchar, (select RenewableAfter from deleted));
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'RenewableAfter', @Value, '';
if (select Renewed from deleted)=1
select @Value='Yes';
else
select @Value='No';
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'Renewed', @Value, '';
if (select SelfNominated from deleted)=1
select @Value='Yes';
else
select @Value='No';
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'SelfNominated', @Value, '';
select @Value=CONVERT(varchar, (select DateNominated from deleted), 103);
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'DateNominated', @Value, '';
if (select Approved from deleted)=1
select @Value='Yes';
else
select @Value='No';
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'Approved', @Value, '';
select @Value=ApprovedBy from deleted;
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'ApprovedBy', @Value, '';
select @Value=ActionBy from deleted;
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'ActionBy', @Value, '';
select @Value=CONVERT(varchar, (select EstimatedCost from deleted));
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'EstimatedCost', @Value, '';
select @Value=Comment1 from deleted;
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'Comment1', @Value, '';
select @Value=Comment2 from deleted;
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'Comment2', @Value, '';
select @Value=Notes from deleted;
exec wnf_InsertAuditRecord 'D', @RowId, 'EmployeeLearningNeeds', 'Notes', @Value, '';
end
非常感谢,
正如亚伦在评论中所说,这只是智力意义上的红鲱鱼。