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

Como lograr este procedimiento almacenado

Estas en el tema de Como lograr este procedimiento almacenado en el foro de Mysql en Foros del Web. Hola, me gustaría crear un procedimiento almacenado para una tabla de productos en mysql workbench, pero no tengo idea de como hacer antes de crearlo, ...
  #1 (permalink)  
Antiguo 22/07/2013, 22:56
 
Fecha de Ingreso: julio-2013
Mensajes: 18
Antigüedad: 11 años, 3 meses
Puntos: 1
Pregunta Como lograr este procedimiento almacenado

Hola, me gustaría crear un procedimiento almacenado para una tabla de productos en mysql workbench, pero no tengo idea de como hacer antes de crearlo, una verificación de que las llaves foráneas existan para después poder ejecutar el insert. Por ahora llevo lo siguiente:
Código MySQL:
Ver original
  1. delimiter $
  2. create procedure insertarProductos (in nombre varchar (30), in modelo int, in tipoProducto int,
  3. in tipoInstrumento int, in precio float, in existencia int, in imagen varchar(50))
  4.  
  5. (pro_codigo,pro_nombre,pro_modelo,pro_tipo_producto,
  6. pro_tipo_instrumento,pro_precio,pro_existencia,pro_imagen)
  7. values (0,nombre,modelo, tipoProducto,tipoInstrumento,
  8. precio,existencia,imagen);
  9.  

Las llaves foraneas son de los campos pro_modelo, pro_tipo_producto y pro_tipo_instrumento.Por favor ayudenme que ya no se que hacer. Gracias.

Última edición por gnzsoloyo; 23/07/2013 a las 03:05
  #2 (permalink)  
Antiguo 23/07/2013, 04:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como lograr este procedimiento almacenado

Primero que nada, postea el código completo, porque es evidente que eso que pusiste está recortado (al menos le falta el INSERT INTO...).
Por otro lado, no estás planteando correctamente al menos una parte del proceso: Si estás enviando a insertar en una tabla dependiente, valores que son FK, como mínimo, debes haberlos obtenido previamente de sus tablas origen, antes de que el usuario seleccione esos datos para ser enviados a este procedimiento.
Al menos así es como es habitual hacerlo. Sino, estás haciendo que la base realice validaciones al momento de la inserción final,que simplemente serán rechazados si al menos uno de los valores no es válido... con lo que toda l ainvocación al SP termina siendo ineficiente, y todo el proceso mal optimizado.
Es conveniente siempre que los valores que lleguen a la base estén ya validados, y en la base sólo se deberían realizar nuevas validaciones sólo por consistencia (aquellas validaciones de datos que puedan estar afectados por concurrencia de usuarios). Descargar toda la responsabilidad en un SP, no es una buena práctica.

Nota: Para resaltar el código SQL, por favor usa los Highlights del combo. Para eso están.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: procedimiento_almacenado, procedures
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 10:53.