各位大师,是这样子。以下触发器在后台执行后,我写的是RAISESRROR错误提示信息,信息弹出后单据是不能直接保存的。我想实现只提示一个警告信息,关闭之后。单据还可以正常保存。请帮忙修改一下。先谢谢了
DECLARE @DuplicateValue nvarchar(255);
DECLARE c CURSOR FOR SELECT TD027 FROM @DuplicateValues ORDER BY TD027;
OPEN c;
FETCH NEXT FROM c INTO @DuplicateValue;
WHILE @@FETCH_STATUS = 0
BEGIN
RAISERROR('不能在对象“dbo.COPTD”中插入重复键值:%s。', 16, 1, @DuplicateValue);
FETCH NEXT FROM c INTO @DuplicateValue;
END
CLOSE c;
DEALLOCATE c;
该回答引用ChatGPT
您可以尝试使用以下代码,使用提示消息框提示警告信息,但不会阻止保存:
DECLARE @DuplicateValue nvarchar(255);
DECLARE @ErrorMessage nvarchar(500);
DECLARE @WarningMessage nvarchar(500);
DECLARE c CURSOR FOR SELECT TD027 FROM @DuplicateValues ORDER BY TD027;
OPEN c;
FETCH NEXT FROM c INTO @DuplicateValue;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ErrorMessage = '不能在对象“dbo.COPTD”中插入重复键值:%s。';
SET @WarningMessage = '警告:以下键值已存在' + CHAR(13) + CHAR(10) + @DuplicateValue;
RAISERROR(@ErrorMessage, 16, 1, @DuplicateValue) WITH NOWAIT;
EXEC sp_executesql N'EXECUTE msdb.dbo.sp_send_dbmail @profile_name=''''your_email_profile_name'''',@recipients=''''your_email_address'''',@body=@WarningMessage,@subject=''''Warning Message'''',@body_format=''HTML''';
FETCH NEXT FROM c INTO @DuplicateValue;
END
CLOSE c;
DEALLOCATE c;
上述代码将警告消息发送到您配置的电子邮件地址,如果您不想使用电子邮件警告,则可以从代码中删除相关行。