Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dodaj 1 do pola

Zostałem za to zdegradowany?

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

W konkretnym przypadku Teifion, phpBB DDL wymienia to pole jako NIE NULL, więc nie ma niebezpieczeństwa zwiększenia NULL.

W ogólnym przypadku nie należy używać wartości NULL do reprezentowania zera. Zwiększanie NULL powinien podaj odpowiedź NULL. Jeśli jesteś typem nierozważnego programisty, który myśli NULL=0, odejdź od klawiatury i znajdź inną rozrywkę, po prostu utrudniasz życie reszcie z nas. Oczywiście to jest branża komputerowa i kim jesteśmy, żeby powiedzieć, że się mylisz? Jeśli się nie mylisz, użyj

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

...ale spójrzmy prawdzie w oczy:mylisz się. Jeśli wszyscy zaczynają od poziomu 0, Twój DDL powinien zawierać

level INT DEFAULT '0' NOT NULL

na wypadek, gdyby programiści zapomnieli go ustawić podczas tworzenia rekordu. Jeśli nie wszyscy zaczynają na poziomie 0, pomiń DEFAULT i zmuś programistę do podania wartości podczas tworzenia. Jeśli niektórzy ludzie są poza poziomami, dla których posiadanie poziomu jest rzeczą bez znaczenia, to dodanie jednego do ich poziomu w równym stopniu nie ma znaczenia. W takim przypadku usuń z DDL wartość NOT NULL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyszukiwanie JSON w laravel eloquent

  2. Mysql - wypełnianie wierszy za brakujące miesiące

  3. emulacja funkcji substring_index() MySQL w PGSQL

  4. Jak zaktualizować kolumnę o wartości null

  5. Wiązanie zmiennej parametr/wynik z przygotowanymi oświadczeniami