RyukInside
Bovino maduro
- Desde
- 26 Sep 2009
- Mensajes
- 273
- Tema Autor
- #1
Tengo un sitio web donde almaceno un artículo, este artículo debe
ligarse a un autor y a una categoría los cuales están en otras tablas.
Pretendo resolver esto con un procedimiento (Con php sale fácil, pero no es eficiente). Entonces creo este procedimiento:
El problema es que el artículo tiene una ID el cual es un campo AUTOINCREMENT. Después de insertar el artículo ocupo saber su ID con el que MySQL lo guardó y es la parte que no puedo resolver.
Intenté hacer un select y guardar el resultado en la variable @idNueva pero me resulta un error: "Subquery returns more than 1 row".
Una posible solución es recuperar el último ID de artículo subido pero en caso de que se suban 2 al mismo tiempo(cosa poco probable) podría obtener un ID incorrecto lo cual me pondría a un Autor o Categoría incorrectos.
Alguna propuesta? Si no me entendieron pueden pedirme mas detalles xD.
Saludos
ligarse a un autor y a una categoría los cuales están en otras tablas.
Pretendo resolver esto con un procedimiento (Con php sale fácil, pero no es eficiente). Entonces creo este procedimiento:
Código:
DELIMITER $$
CREATE PROCEDURE setArticulo(titulo varchar(200), extracto text, etiquetas varchar(200), autor int(16))
BEGIN
insert into articulo(titulo,extracto,etiquetas) values(titulo,extracto,etiquetas);
set @idNueva = (select idarticulo from articulo where titulo=titulo and extracto=extracto and etiquetas=etiquetas);
insert into usuario_articulo(idusuario,idarticulo) values(autor,@idNueva);
END$$
El problema es que el artículo tiene una ID el cual es un campo AUTOINCREMENT. Después de insertar el artículo ocupo saber su ID con el que MySQL lo guardó y es la parte que no puedo resolver.
Intenté hacer un select y guardar el resultado en la variable @idNueva pero me resulta un error: "Subquery returns more than 1 row".
Una posible solución es recuperar el último ID de artículo subido pero en caso de que se suban 2 al mismo tiempo(cosa poco probable) podría obtener un ID incorrecto lo cual me pondría a un Autor o Categoría incorrectos.
Alguna propuesta? Si no me entendieron pueden pedirme mas detalles xD.
Saludos
