Amigos de foro, después de ya haber desarrollado varias aplicaciones, las cuales cada vez se conectan mas usuarios, me ha surguido una duda.
Utilizo Firebird 2.5 y Delphi 2010.
Imaginemos la siguiente situación, un usuario realiza una consulta a la BD, la cual tiene implicita condiciones para evitar problemas, por ejemplo: todas las facturas tal que no estén en nómina, sería algo así:
Código SQL
[-]
select f.* from facturas f left join nomina n on f.id_factura = n.id_factura where n.id_factura is null
Ahora pensemos que un segundo usuario realiza la misma consulta, previamente a que el primer usuario inserte, modifique o elimine algún registro que cambie el resultado de la consulta. Es decir, ambos usuario tienen los mismo resultados (en este caso facturas) que cumplen con la condiciones de no estar en alguna nomina.
Seguido a esto el segundo usuario asocia cierta factura (por ejemplo la numero 3) a una nomina.
Si es que el primer usuario NO refresca la consulta, e intenta asociar la misma factura 3 a una nómina tendré una duplicidad y posterior problemas con esto.
No puedo resolver esto, sin tener que refrescar la cunsulta antes de insertar, modificar o eliminar el registro?
Se puede programar condiciones (reglas) en el mismo motor de BD?
Como se hace esto?
Algun link de donde aprender?
Espero me puedan ayudar.
Gracias