是否可以在触发器中提示用户一条错误消息?
例如,如果用户没有在字段中输入值,那么它会提示他们,并且不保存记录。
我不知道错误消息是否是正确的术语。这可能是例外。
发布于 2020-09-17 11:50:10
假设Firebird的版本至少是2.5,简短的答案是-是。
您只需创建一个简单的异常,如下所示
create exception my_universal_exception 'This is the default exception text';然后在触发器中使用它:
ALTER TRIGGER A0 ACTIVE
BEFORE insert POSITION 0
as
begin
if (new.id is null)
then exception my_universal_exception 'You should specify some value for ID.';
end就我个人而言,我使用了一种更复杂的方法。我有一个专用的过程,它接受文本参数,默认情况下会引发异常,但取决于其他用户变量,它会将异常写入日志记录表,或者执行任何其他有用的操作:
CREATE PROCEDURE SHOW_ERROR (
ERROR_TEXT varchar(256) )
AS
begin
if ((select rdb$get_context('USER_SESSION', 'SILENT_MODE') from rdb$database) is not null)
then insert into s_log(log_message)values(:error_text);
else exception my_universal_exception :error_text;
end因此,稍后我在触发器中使用它,如下所示:
if (new.id is null)
then execute procedure show_error('You should specify some value for ID.');还请注意,从Firebird 3.0开始,您还可以在exceptions as described here中使用参数。
当然,您的客户端软件应该相应地处理此类错误,但这超出了这个问题的范围。
https://stackoverflow.com/questions/63928946
复制相似问题