0
我有一个表让我们说tableA已经填充var_code和start_time和end_time,我想插入一个值到另一个表,但在我插入之前我想检查这个var_code是否已经在表A中定义的特定时间内使用。要找到新对象和时间之间的关系,我必须加入三个表格。当我尝试插入某些内容时,出现错误消息:错误:查询没有结果数据的目标地址 我该怎么做?sql检查对象是否在使用触发器
CREATE OR REPLACE FUNCTION same_obj_does_not_already_used()
RETURNS trigger AS
$BODY$
BEGIN
declare
var1 numeric;
var2 date;
var3 time without time zone;
var4 time without time zone;
begin
select id as var1,date as var2,start_t as var3,end_t as var4
from tableA tA inner join tableB tB
on (tA.id = tB.id)
inner join tableC tC
on (tB.code = tC.fcode);
if(new.id = var1 and new.date = var2 and new.start_t>=var3 and new.end_t<= var4) then
raise exception 'Error';
end if;
end;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION ame_obj_does_not_already_used()
OWNER TO postgres;
错误信息是固定的,但new.start_t和new.end_t是空的这是真的,因为当我插入新的var_code我不插入时间,所以我可以检查与插入另一个表中的时间 –