Here is a working example:

drop table test_intervals;

CREATE TABLE test_intervals (
        start_time NUMBER NOT NULL,
        end_time NUMBER NOT NULL,primary key (start_time,end_time)
);

create or replace package test_mut as
type start_time_tab_type is table of number index  by binary_integer;
start_time_tab start_time_tab_type;
end_time_tab   start_time_tab_type;
end;
/

create or replace trigger testupd before update or insert on test_intervals
for each row   
declare
m_cnt number := 0;
begin
 test_mut.start_time_tab(test_mut.start_time_tab.count + 1) :=
:new.start_time;
 test_mut.end_time_tab  (test_mut.end_time_tab.count   + 1) :=
:new.end_time;
end;
/

create or replace trigger testupd1 after update or insert on test_intervals

declare
m_cnt number := 0;
begin
 for i in 1..test_mut.start_time_tab.count loop
   dbms_output.put_line(i);
   select count(*) into m_cnt
     from test_intervals
     where (test_mut.start_time_tab(i) between start_time and end_time 
            or 
            start_time between test_mut.start_time_tab(i) and
test_mut.end_time_tab(i))
        and not(start_time = test_mut.start_time_tab(i) and end_time =
test_mut.end_time_tab(i));
   if m_cnt <> 0 
   then
    test_mut.start_time_tab.delete;
    test_mut.end_time_tab.delete;
    raise_application_error (-20001,' overlap error '); 
   end if;
  end loop;
  test_mut.start_time_tab.delete;
  test_mut.end_time_tab.delete;
end;
/


Try different inserts/updates.

Regards,

Waleed
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Khedr, Waleed
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to