我有一个表让我们说tableA已经填充了var_code和start_time和end_time,我想在另一个表中插入一个值但是在插入之前我想检查这个var_code是否已经在定义的特定时间内使用TableA的。要找到新对象和时间之间的关系,我必须加入三个表。当我尝试插入一些东西时,我收到一条错误消息:错误:查询没有结果数据的目的地 我做错了什么?
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;
答案 0 :(得分:0)
我认为这部分
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);
应该有INTO条款..
select id, date, start_t, end_t INTO var1, var2, var3, var4