No repitas los mensajes ... con uno contestamos!
El idpersona es clave única de la tabla contacto, por lo que no se admiten valores duplicados en la tabla, y tú estas intentando insertar dos veces el contacto con idpersona = 2.
ORA-00001: restricción única (SCOTT.SYS_C003122) violada las dos tablas creadas son y los insert son: SQL> create table tipocontacto 2 (idcontacto number(2) primary key, 3 descripcion varchar2(25) not null 4 ); Tabla creada. SQL> create table contacto 2 (idpersona number(6) primary key, 3 nombre varchar2(20) not null, 4 apellido1 varchar2(25) not null, 5 apellido2 varchar2(25), 6 idtipocontacto number(2), 7 fechaalta date, 8 FOREIGN KEY(idtipocontacto) REFERENCES tipocontacto 9 ); Tabla creada. los insert son: SQL> insert into tipocontacto values(1,'AMIGO DE LA INFANCIA'); 1 fila creada. SQL> insert into tipocontacto values(2,'COMPAÑERO DE TRABAJO'); 1 fila creada. SQL> insert into contacto values(1,'JUAN','RAMIREZ','FERNANDEZ',1,'15/12/2005'); 1 fila creada. SQL> insert into contacto values(2,'PEPE','SANCHEZ','GOMEZ',2,'15/12/2005'); 1 fila creada. SQL> insert into contacto values(2,'SANDRA','MARTINEZ','RUIZ',2,'15/02/2001'); insert into contacto values(2,'SANDRA','MARTINEZ','RUIZ',2,'15/02/2001') * ERROR en línea 1: ORA-00001: restricción única (SCOTT.SYS_C003122) violada
Saludos,
DJK