Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

No hay ninguna clave única o primaria correspondiente para esta lista de columnas

Estas en el tema de No hay ninguna clave única o primaria correspondiente para esta lista de columnas en el foro de Oracle en Foros del Web. Hola! Estoy empezando con Oracle y al hacer una de tantas pruebas con bases de datos de ejemplo que van saliendo sobre la marcha me ...
  #1 (permalink)  
Antiguo 08/06/2012, 03:32
 
Fecha de Ingreso: septiembre-2004
Mensajes: 7
Antigüedad: 19 años, 7 meses
Puntos: 0
Pregunta No hay ninguna clave única o primaria correspondiente para esta lista de columnas

Hola!
Estoy empezando con Oracle y al hacer una de tantas pruebas con bases de datos de ejemplo que van saliendo sobre la marcha me encuentro con un error que, la verdad, no se por donde tirar.

ORA-02270: no hay ninguna clave única o primaria correspondiente para esta lista de columnas

La tabla en cuestión es:

Código SQL:
Ver original
  1. CREATE TABLE factura_linea (
  2.     idfactura NUMBER(8,0) NOT NULL,
  3.     idarticulo NUMBER(6,0) NOT NULL,
  4.     cantidad NUMBER(3,0) NOT NULL,
  5.    
  6.     CONSTRAINT linea_pk  PRIMARY KEY ( idfactura, idarticulo ) enable,
  7.     CONSTRAINT linea_fk1 FOREIGN KEY ( idfactura ) REFERENCES factura ( idfactura ),
  8.     CONSTRAINT linea_fk2 FOREIGN KEY ( idarticulo ) REFERENCES articulo ( idarticulo )
  9. );

Y las tablas a las que hace referencia son:

Código SQL:
Ver original
  1. CREATE TABLE articulo (
  2.     idarticulo NUMBER(6,0) NOT NULL,
  3.     nombre varchar2(45) NOT NULL,
  4.     precio NUMBER(9,2) NOT NULL,
  5.     fecha_alta TIMESTAMP NOT NULL,
  6.    
  7.     CONSTRAINT articulo_pk PRIMARY KEY ( idarticulo ) enable
  8. );
  9.  
  10. CREATE TABLE factura (
  11.     idfactura NUMBER(8,0) NOT NULL,
  12.     idusuario NUMBER(2,0) NOT NULL,
  13.     fecha_factura TIMESTAMP NOT NULL,
  14.     importe NUMBER(8,2) NOT NULL,
  15.     pagada CHAR NOT NULL,
  16.    
  17.     CONSTRAINT factura_pk PRIMARY KEY ( idfactura, idusuario ) enable,
  18.     CONSTRAINT factura_fk FOREIGN KEY ( idusuario ) REFERENCES usuario ( idusuario )
  19. );

Es una estructura bastante sencilla y por eso no se qué puede estar fallando :(

Última edición por areneros; 08/06/2012 a las 03:37
  #2 (permalink)  
Antiguo 08/06/2012, 03:55
 
Fecha de Ingreso: septiembre-2004
Mensajes: 7
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: No hay ninguna clave única o primaria correspondiente para esta lista de c

Nada, ya está solucionado, el tema está en que la clave primaria de "factura" la compone el campo "idusuario" que también tiene que ser referenciado desde "factura_linea" quedando así:

Código SQL:
Ver original
  1. CREATE TABLE factura_linea (
  2.     idfactura NUMBER(8,0) NOT NULL,
  3.     idarticulo NUMBER(6,0) NOT NULL,
  4.     idusuario NUMBER(2,0) NOT NULL,
  5.     cantidad NUMBER(3,0) NOT NULL,
  6.    
  7.     CONSTRAINT linea_pk  PRIMARY KEY ( idfactura, idarticulo ) enable,
  8.     CONSTRAINT linea_fk1 FOREIGN KEY ( idfactura, idusuario ) REFERENCES factura ( idfactura, idusuario ),
  9.     CONSTRAINT linea_fk2 FOREIGN KEY ( idarticulo ) REFERENCES articulo ( idarticulo )
  10. );

Etiquetas: clave, correspondiente, lista, primaria, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:58.