Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Adicionar 1 a um campo


Eu fico rebaixado por isso?
$sql = "UPDATE skills SET level = level+1 WHERE id = $id";
$result = $db->sql_query($sql);
$db->sql_freeresult($result);

No caso específico do Teifion, o phpBB DDL lista aquele campo particular como NOT NULL, então não há perigo de incrementar NULL.

No caso geral, você não deve usar NULL para representar zero. Incrementar NULL deveria dê uma resposta de NULL. Se você é o tipo de desenvolvedor equivocado que pensa NULL=0, se afaste do teclado e encontre outro passatempo, você está apenas dificultando a vida do resto de nós. Claro, esta é a indústria de computadores e quem somos nós para dizer que você está errado? Se você não estiver errado, use
$sql = "UPDATE skills SET level = COALESCE(level,0)+1 WHERE id = $id";

...mas vamos encarar:você está errado. Se todos começarem no nível 0, seu DDL deverá incluir
level INT DEFAULT '0' NOT NULL

caso os programadores esqueçam de configurá-lo ao criar um registro. Se nem todos começarem no nível 0, pule o DEFAULT e force o programador a fornecer um valor na criação. Se algumas pessoas estão além dos níveis, para quem ter um nível é uma coisa sem sentido, então adicionar um ao seu nível igualmente não tem significado. Nesse caso, elimine o NOT NULL do DDL.