sql检查对象是否正在使用触发器

时间:2015-05-05 19:29:23

标签: sql postgresql

我有一个表让我们说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;

1 个答案:

答案 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
相关问题