Hola,
Cita: nuevo con lo que tu planteas es lo mismo, compruebas que en el registro hay un 0, vale, por tanto está sin usar.
->Entre tú instrucción de comprobar el valor
****Entre las dos hay un período de tiempo en el que otro usuario ha podido almacenar 1 uno y eso tuya no lo tienes en cuenta no??
->Almacenar el 1
Es decir, tu compruebas que está libre, pero antes de almacenar el 1, otro puede comprobar que está libre y ya lo estais modificando los dos.
El truco esta en hacer esos dos pasos de forma excluyente, atomica, de una forma que nadie pueda modificar el valor entre la lectura y la escritura. En
http://www.mysql.com/doc/en/ANSI_diff_Transactions.html al final tienes ejemplos de como hacerlo en MySQL.
Por cierto, distintos motores de base de datos tienen distintos metodos.
Cita: ya se que puede paracer un metodo muy cutre, si comparamos con semaforos
La descripcion de nuevo es basicamente la de un semaforo (o la de una zona critica).
Saludos.