sql >> Databáze >  >> RDS >> Mysql

Vložení hodnoty NULL do sloupců NOT NULL s výchozí hodnotou

Na základě mého výzkumu bych řekl, že by to mohlo být jak věc „vy“, tak věc „MySQL“. Zkontrolujte definice tabulek pomocí SHOW CREATE TABLE table_name; . Poznamenejte si všechna pole definovaná pomocí NOT NULL .

Referenční příručka MySQL 5.6:13.2.5 INSERT syntaxe uvádí:

To by znamenalo, že nezáleží na tom, který režim SQL používáte. Pokud děláte jeden řádek INSERT (podle vašeho ukázkového kódu) a vložením NULL hodnotu do sloupce definovaného pomocí NOT NULL , nemělo by to fungovat.

Stejným dechem, ironicky, pokud byste jednoduše vynechali hodnotu ze seznamu hodnot, příručka MySQL říká následující a na režimu SQL záleží v tomto případě:

Tím pádem nemůžete vyhrát!;-) Dělat si srandu. Je třeba přijmout, že NOT NULL na poli tabulky MySQL skutečně znamená Nebudu akceptovat hodnotu NULL pro pole při provádění jednoho řádku INSERT , bez ohledu na režim SQL .'

Vše, co bylo řečeno, platí také následující z návodu:

Tak se vzpamatujte. Nastavte výchozí hodnoty v obchodní logice (objektech) a nechte datovou vrstvu, aby se od toho řídila. Výchozí nastavení databáze se zdají jako dobrý nápad, ale kdyby neexistovaly, chyběly by vám? Pokud v lese spadne strom...



  1. Získejte nadřazenou MySQL nejvyšší úrovně

  2. Trezor TO_NUMBER()

  3. Získejte hodnotu pole ze záznamu, který způsobí, že agregovaná podmínka bude pravdivá

  4. Seskupte pouze sousední řádky