sql >> Base de Datos >  >> RDS >> Mysql

Agregar 1 a un campo

¿Me degradan por esto?

$sql = "UPDATE skills SET level = level+1 WHERE id = $id";
$result = $db->sql_query($sql);
$db->sql_freeresult($result);

En el caso específico de Teifion, el DDL de phpBB enumera ese campo en particular como NO NULO, por lo que no hay peligro de incrementar NULL.

En el caso general, no debe usar NULL para representar cero. Incrementar NULL debería dar una respuesta de NULL. Si usted es el tipo de desarrollador equivocado que piensa que NULL=0, aléjese del teclado y encuentre otro pasatiempo, simplemente nos está complicando la vida a los demás. Por supuesto, esta es la industria informática y ¿quiénes somos nosotros para decir que estás equivocado? Si no te equivocas, usa

$sql = "UPDATE skills SET level = COALESCE(level,0)+1 WHERE id = $id";

...pero seamos realistas:te equivocas. Si todos comienzan en el nivel 0, entonces su DDL debe incluir

level INT DEFAULT '0' NOT NULL

en caso de que los programadores olviden configurarlo cuando crean un registro. Si no todos comienzan en el nivel 0, omita el valor PREDETERMINADO y obligue al programador a proporcionar un valor en la creación. Si algunas personas están más allá de los niveles, para quienes tener un nivel no tiene sentido, entonces agregar uno a su nivel igualmente no tiene sentido. En ese caso, elimine NOT NULL del DDL.