Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/08/2002, 10:37
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 23 años, 2 meses
Puntos: 129
Re: Transacciones MySQL - PHP

No se si acabo de entenderte .. pero te explico como me apaño yo con la integridad referencial y demas ..

Siempre parto de una tabla con identificador unico y autonumerico ..

El "ID" de la tabla padre .. "lo propago" en un campo extra de las sub-tablas ..

ejemplo:

** tabla padre
id (autonumerico, indice .. unico etc)
campos
mascampos
otroscampos

** tabla hija
id (autonumerico, indice etc ...)
id_tabla_padre
campos
mascampos
otroscampos

Mis "inserts" .. son del timpo
INSERT INTO tabla_padre .... VALUE ('',etc ...) // dejo q actue el autonumerico ..

// aqui vendra tal vez tu duda .. si haces un "last insert ID" .. podria existir algun problema con algun "treah" por ahi dando vuelas ...
// Por mi parte .. hasta el momento he usado relaciones de tablas tipo "cuentas" -> perfiles, productos .. etc .. Asi, para estos casos en vez de dar de alta al instante todas las relacines entre tablas (propagando en ID de tabla padre sobre las demas .. ) Lo haga cuando el "usuario de esa cuenta" se identifica por primera vez con lo cual he tenido que obterner su ID original y unico por alguna consulta a otros datos de la tabla padre .. ese ID es el que uso para "propagarlo" y ahi no tengo problemas con "treahs" por ahi ejecutandose que me puedan "falsear" el ID ..

La identificacion del usuario (oseae, hacer la consulta para obtener ese ID atendiendo a condiciones de la tabla y campos .. ) no es necesario que sea "manual" .. puedes guardarte el valor de esa condicion en una variable de session y hacer tu consulta seguidamente con una clausula WHERE campo=datosessio

Este método se que no es lo mas optimizado y será valido para todos los casos .. pero para la mayoria de aplicaciones para la web se suele usar este modelo de datos ..

INSERT INTO tabla_hija ... VALUE ('',id_tabla_padre,etc ...)
y todas mis consultas ... solo una clausula


Basicamente es eso .. si la consulta se complica hay q empezar a usar LEFT JOIN .. ON .. y variantes.