Home » SQL & PL/SQL » SQL & PL/SQL » Date & phone number constraint
Date & phone number constraint [message #23381] Wed, 04 December 2002 14:39 Go to next message
HG
Messages: 13
Registered: December 2002
Junior Member
Hello,

I'm not an experienced SQL programmer, but i'm working on a oracle database where i need a constraint for a date-field (dd/mm/yyyy) and a constraint for a phone number where the '/' can appear in 3th, 4th or 5th position (99/9999999 or 999/999999 or 9999/999999).
Can anyone help me please.
Tanks in advance.
HG
Re: Date & phone number constraint [message #23382 is a reply to message #23381] Wed, 04 December 2002 15:34 Go to previous message
Todd Barry
Messages: 4819
Registered: August 2001
Senior Member
We would need much more information on what type of constraint you want for you date field, but both of these would be handled in triggers. Here I check that one slash only exists in pos. 3-5.

sql>create table t (p varchar2(32));
 
Table created.
 
sql>create or replace trigger t_trg
  2  after insert on t
  3  for each row
  4  begin
  5    if    instr(:new.p, '/') = 0
  6       or length(replace(substr(:new.p, 3, 3), '/')) <> 2
  7       or instr(substr(:new.p, 1, 2) || substr(:new.p, 6), '/') > 0 then
  8      
  9      raise_application_error(-20000, 'Invalid phone number (' || :new.p || ')');
 10      
 11    end if;
 12  end;
 13  /
 
Trigger created.
 
sql>insert into t values ('99/9999999');
1 row created.
 
sql>insert into t values ('999/999999');
1 row created.
 
sql>insert into t values ('9999/999999');
1 row created.
 
sql>insert into t values ('9/999999999');
insert into t values ('9/999999999')
            *
ERROR at line 1:
ORA-20000: Invalid phone number (9/999999999)
ORA-06512: at "T_TRG", line 6
ORA-04088: error during execution of trigger 'T_TRG'
 
sql>insert into t values ('9999999999');
insert into t values ('9999999999')
            *
ERROR at line 1:
ORA-20000: Invalid phone number (9999999999)
ORA-06512: at "T_TRG", line 6
ORA-04088: error during execution of trigger 'T_TRG'
 
sql>insert into t values ('99//99999999');
insert into t values ('99//99999999')
            *
ERROR at line 1:
ORA-20000: Invalid phone number (99//99999999)
ORA-06512: at "T_TRG", line 6
ORA-04088: error during execution of trigger 'T_TRG'
Previous Topic: Re: Help with CLOBs write
Next Topic: View + Data Independence
Goto Forum:
  


Current Time: Wed May 15 21:25:38 CDT 2024