Hilo General - Dudas Oracle

Ronso

Buenas, creo este hilo para la gente que tenga sus dudas y problemas con este gestor de base de datos, como aquí un servidor, y aquí dejo la primera:

  • Crea la tabla “compuestopor”, que relaciona las tablas “pedido” y “plato”. Si se elimina el pedido, se deben eliminar todos los registros relacionados en la nueva tabla. Si se elimina el plato con el que se relacionan uno o más pedidos, ese atributo debe tomar el valor NULL.

CREATE TABLE compuestopor(
numero NUMBER(6),
codigo CHAR(5),
CONSTRAINT PK_compuestopor PRIMARY KEY(numero,codigo),
CONSTRAINT FK_pedido FOREIGN KEY(numero) REFECENCES pedido(numero) ON DELETE CASCADE,
CONSTRAINT FK_plato FOREIGN KEY(codigo) REFECENCES plato(codigo) ON DELETE SET NULL
)

Me dice que falta una palabra clave, pero no se como hacerlo... Gracias!

Weahl

Está mal escrito el código, pone REFECENCES y es REFERENCES.

Por lo demas no veo nada mal.

1 1 respuesta
Merkury

Que troll es oracle con el REFERENCES XD

1 respuesta
Ronso

#2 #3 Ouch! Me cago en mi nación... puto troll. Gracias por la ayuda.

-L0B0-

Buenas, aprovecho que ya existe el hilo.

Tengo una serie de tablas, y aparte tengo que hacer unos procedimientos de alta, baja y modificación.

Yo había pensado por ejemplo en el procedimiento de alta, comprobar antes de hacer el insert cosas como que los campos obligatorios (not null en la tabla) no sean nulos en los parámetros de entrada.

Aparte de esto hago mas comprobaciones a base de código, con IF tal, then RAISE EXCEPTION tal.

Pero joer, es que todo esto en realidad no hace falta, ya que poniendo restricciones al crear la tabla (not null, unique, check lo que sea) oracle ya lo comprueba por sí mismo...

Entonces, la pregunta és, aunque tenga las restricciones en las tablas, seria "profesional" además hacer mis propias comprobaciones en mi código? Es que no se como se suele hacer esto, y la verdad es que me puedo ahorrar bastante trabajo..

En este caso lo que haría sería capturar el codigo de error y dar mi mensaje personalizado.

Bueno, espero haberme explicado bien xD

0buS

Hombre los triggers yo normalmente el uso que le doy es cuando necesitas hacer alguna comprobación en otras tablas o consultas antes de hacer alguna edición en una tabla.

Es decir, para hacer un insert, si lo único que necesitas comprobar es que los campos NOT NULL, sean realmente not null, no tiene sentido usar un trigger, ya que la propia estructura de la tabla ya la echará para atrás. Con un trigger vas a hacer más lenta una simple inserción.

Ahora, si lo que quieres es lanzar una excepción por cada inserción mal hecha, pues si, entonces si necesitas un trigger xD

-L0B0-

Bueno no es un trigger, es un procedimento almacenado que seria ejecutado desde una aplicación, pero para el caso lo que dices es lo mismo..

Es que si soy sincero, estoy haciendo un trabajo, y mirando los que hizo otra gente en cursos anteriores todos comprueban esas cosas... pero coño xD yo no creo que haga falta.

Y claro, me parece muy raro que sea yo el primer "listo" que no ponga nada de eso ^^

EDIT: el procedimento, además de insertar en la tabla, se encarga de actualizar otra tabla de estdísticas y de log, y ya veremos si mas cosas.

Usuarios habituales

  • -L0B0-
  • 0buS
  • Ronso
  • Merkury
  • Weahl