elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  myisam control referencial?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: myisam control referencial?  (Leído 3,716 veces)
Kase


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
myisam control referencial?
« en: 15 Mayo 2011, 04:07 am »

que es mas optimo para llevar el control referencial...

bloquear tabla -> insertar -> get last id -> desblokear tabla

usar el valor optenido de last insert id en otra insercion, consulta o lo que sea...


o mysql_last_id ()  que devuelve el ultimo valor  insertado?  esto me genera una duda, y es si devuelve el ultimo valor  de un query, o se tiene que ejecutar un metodo espesifico para insertar...


volviendo a sql.. sera posible blokear y desblokear tablas durante un procedimiento?


que metodo utilizan para mantener la integridad en myisam en el siguiente ejemplo:

bd: 
usuario {datos tipicos de usuario}
producto {tipico del producto, stock}
usuariohistorial{usuario,producto,cantidad,fecha}

el proceso es que cuando un usuario compra un producto, este deve descontarse de producto y añadirse en el historial del usuario.

ya sea una solucion con puro sql  o con php (o con codeigniter si es posbile)

mi problema es que nunca e usado myisam, e preferido innoDB por tener referencias, pero ahora empiezo con proyectos en los que innoDB me es muy pesado.


En línea

Kase


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
Re: myisam control referencial?
« Respuesta #1 en: 17 Mayo 2011, 04:09 am »

como mencionaron  ase unos post atras...
mysql_insert_id() devuelve el utimo valor generado en el script

Citar
<?php
$link = mysql_connect('localhost', 'prueba', '12345');
mysql_select_db('prueba');
mysql_query("INSERT INTO prueba (prueba) values ('prueba')");
sleep(20);
printf("Last inserted record has id %d\n", mysql_insert_id());
?>
ejecutenlo en 2 navegadores distintos para hacer la prueba

otra solucion para los que no usan php es

blokear tabla
insertar
get max(id)
desblokear tabla

tiene que ser con get max(id) por que  last_insert_id() es global


En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: myisam control referencial?
« Respuesta #2 en: 17 Mayo 2011, 16:49 pm »

A lo mejor no entendi bien, pero para que necesitas control referencial?

Podes simplemente restar 1 a la cantidad de productos en stock (producto.stock) mientras se cumpla que el stock del mismo sea mayor a 0, y luego en la misma consulta agregar dicho producto a la tabla de historial de usuario. UEl problema es que MyISAM no soporta transacciones. Pero existe una libreria en PHP para emularlas.

Podrias probar algo asi, pero usando esa libreria para emular transacciones y evitar errores de escritra/lectura.

Código
  1. UPDATE producto SET producto.stock = producto.stock - 1 WHERE producto.id = $id AND producto.stock > 0;
  2. INSERT INTO historialusuario (producto, algo_mas) VALUES ($id,$otra_cosa).


Saludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Comprimir tabla MySQL (MyISAM)
Bases de Datos
Skeletron 8 9,633 Último mensaje 30 Marzo 2010, 16:39 pm
por ^Tifa^
problema con integridad referencial en access (urge) [resuelto]
Bases de Datos
xexio 2 5,321 Último mensaje 14 Junio 2010, 19:49 pm
por xexio
InnoDB vs MyISAM en sitio web con importante cantidad de visitas « 1 2 »
Bases de Datos
Skeletron 10 11,399 Último mensaje 17 Mayo 2011, 04:05 am
por Skeletron
blokeo por registro innodb + myisam
Bases de Datos
Kase 2 4,044 Último mensaje 21 Mayo 2011, 03:57 am
por Kase
MyISAM vs InnoDB (Ventajas y diferencias)
Bases de Datos
el-brujo 0 15,123 Último mensaje 24 Mayo 2012, 19:00 pm
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines