我使用了这段代码并在之后创建了一个触发器功能。如果条目号(eno)字段中已有值,但如果字段为空则不正常
CREATE OR REPLACE FUNCTION eno_inc() RETURNS TRIGGER AS $eno_inc$
DECLARE
enmb INTEGER;
BEGIN
select max(eno) into enmb from entry;
new.eno := enmb + 1;
return new;
END;
$eno_inc$
LANGUAGE plpgsql;
我该如何解决这个问题? P.S我不能使用'serial'或'sequence',因为课程组织者需要触发该功能
答案 0 :(得分:1)
所以你想要的是专门的行为,只有在情况 字段为空时才会触发。
这样说,你基本上回答了自己的问题:
CASE WHEN enmb IS NULL THEN new.eno := 1;
ELSE new.eno := enmb + 1;
END CASE
答案 1 :(得分:0)
使用COALESCE(标准SQL):
COALESCE
函数返回其第一个非null的参数。仅当所有参数都为空时才返回Null。
当enmb
为空而不是当前的NULL时,这样的事情会在entry
中给你一个零:
select coalesce(max(eno), 0) into enmb from entry;