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

[SOLUCIONADO] Las foreign keys no se me actualizan

Estas en el tema de Las foreign keys no se me actualizan en el foro de Bases de Datos General en Foros del Web. Buenas, tengo un problema, estoy haciendo algo mal y no se qué es. Tengo las siguientes dos tablas: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE ...
  #1 (permalink)  
Antiguo 20/06/2015, 05:16
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 8 años, 11 meses
Puntos: 0
Exclamación Las foreign keys no se me actualizan

Buenas, tengo un problema, estoy haciendo algo mal y no se qué es. Tengo las siguientes dos tablas:
Código SQL:
Ver original
  1. CREATE TABLE PEDIDO
  2.                   (
  3.                   FECHA_REAL DATE,
  4.                   SEC_PROVEEDOR INTEGER,
  5.                   SEC_ALBARAN INTEGER,
  6.                   SEC_FACTURA INTEGER,
  7.                   SEC_PEDIDO INTEGER,
  8.                   PRIMARY KEY(SEC_PEDIDO),
  9.                   FOREIGN KEY(SEC_PROVEEDOR) REFERENCES PROVEEDOR,
  10.                   FOREIGN KEY(SEC_ALBARAN) REFERENCES ALBARAN,
  11.                   FOREIGN KEY(SEC_FACTURA) REFERENCES FACTURA
  12.                   );


Código SQL:
Ver original
  1. CREATE TABLE LINEA_DE_PEDIDO
  2.                             (PRECIO NUMERIC,
  3.                             CANTIDAD INTEGER,
  4.                             SEC_PRODUCTO INTEGER,
  5.                             SEC_PEDIDO INTEGER,
  6.                             SEC_LINEA_DE_PEDIDO INTEGER,
  7.                             PRIMARY KEY(SEC_LINEA_DE_PEDIDO),
  8.                             FOREIGN KEY(SEC_PRODUCTO) REFERENCES PRODUCTO,
  9.                             FOREIGN KEY(SEC_PEDIDO) REFERENCES PEDIDO
  10.                             );


(Hay otras tablas pero para el caso es lo mismo) Si hago insert a ambas tablas, en las posiciones de las keys me salen todas a NULL menos la primary key (que es a la que le hago el .nextval)

Y si intento hacerlo por procedures, por ejemplo:

Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE hacer_pedido(PRECIO1 NUMERIC,CANTIDAD1 INTEGER) IS
  2.  
  3. BEGIN
  4.  
  5. INSERT INTO PEDIDO (FECHA_REAL,SEC_PEDIDO)
  6.        VALUES(to_date(SYSDATE,'DD/MM/RR'),SEC_PEDIDO.NEXTVAL);
  7.  
  8.  
  9. INSERT INTO LINEA_DE_PEDIDO (PRECIO,CANTIDAD,SEC_LINEA_DE_PEDIDO)
  10. VALUES (PRECIO1,CANTIDAD1,SEC_LINEA_DE_PEDIDO.NEXTVAL);
  11.  
  12.  
  13.   END;



En ambas tablas donde deberían salir las FOREIGN KEYS me sale todo a null.

No sé por qué no se actualizan ni dónde estoy fallando.

Última edición por gnzsoloyo; 20/06/2015 a las 05:54
  #2 (permalink)  
Antiguo 20/06/2015, 06:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Las foreign keys no se me actualizan

por empezar, no está claro de qué DBMS estás hablando, aunque se podría inferir que es de Oracle, por el uso de NEXTVAL, propio de las sequences.
Por otro lado, si esas son las definiciones de las FK están mal, porque no estan indicando el campo de la PK en la tabla referenciada, ni tampoco est´s indicando que se actualicen en caso de cambio:
...
Código SQL:
Ver original
  1. OREIGN KEY(SEC_PEDIDO) REFERENCES PEDIDO(SECPEDIDO)

El manual de Oracle tiene este ejemplo:

Código SQL:
Ver original
  1. CREATE TABLE parent (
  2.     id INT NOT NULL,
  3.     PRIMARY KEY (id);
  4.  
  5. CREATE TABLE child (
  6.     id INT,
  7.     parent_id INT,
  8.     INDEX par_ind (parent_id),
  9.     FOREIGN KEY (parent_id)
  10.         REFERENCES parent(id)
  11.         ON DELETE CASCADE
  12. );

No estás poniendo el campoPK, como dije, y te has olvidado del CASCADE.
Por lo demás, te recuerdo que no hay operaciones automágicas en las bases de datos. El DBMS hará lo que tu le digas que haga.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 20/06/2015 a las 08:10
  #3 (permalink)  
Antiguo 20/06/2015, 07:43
Avatar de blueMuffin010  
Fecha de Ingreso: mayo-2015
Ubicación: Sevilla
Mensajes: 19
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Las foreign keys no se me actualizan

Oído cocina, gracias!

Etiquetas: bd, key, oracle, sql
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 09:23.