Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/04/2008, 09:28
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Duda inserción en una tabla

Tu suposicion de como funcionaria con autoinc es correcta.

Lo que pasa es que hacerlo como dices te obligara a consultar el id del ultimo comentario introducido previo a insertar el nuevo, mas consultas a la bbdd.

Si usas un autoinc esto se ara automaticamente y el hecho de que el id no sea consecutivo no te impide nada...

Es decir si quieres todos los comentarios de un producto podras listarlos por orden de insercion igual que si estuvieran numerados de 1 a n, si quieres el último pues max(id) igual que de 1 a n, si quieres listar todos los productos con sus comentarios agrupados por producto y por orden de insercion ORDER BY id_producto, id_comentario, si quieres saber cuantos hay por producto Count(*) group by id_producto...

Si quieres numerarlos en el momento de mostrarlos en el web o interficie que sea puedes hacerlo mostrando el numerador del bucle que los trae de la base de datos y luego te quedara 1,2,3... independientemente del id que tengan...

Uf... no se si te habre convencido... aveces es mejor no complicarse la vida...

Si apesar de tamaña explicación quieres hacerlo pues es facil

Primero:

select max(id_comentario) from comentarios where id_producto=XX

guardas el valor en una variable (variableNuevoId), lo incrementas en 1

Segundo:

insert into comentarios (id_producto,id_comentario,comentario) values (XX, variableNuevoId, "Texto del comentario")

no se si con procediminetos almacenados o tigers se podria hacer desdel propio motor de la base de datos pero basicamente haran lo mismo...

----Corrección ------

He releido tu post y quizas lo que preguentabas es esta ultima parte (procediminetos almacenados o tigers) y ya sabias como hacerlo con consultas independientes, en cualquier caso la argumentació es igualmente valida.

--------------------------

Quim

Última edición por quimfv; 22/04/2008 a las 09:48