Mysql
 sql >> база данни >  >> RDS >> Mysql

Вмъкване на NULL в колони NOT NULL със стойност по подразбиране

Въз основа на моите изследвания бих казал, че може да бъде както „вие“, така и „MySQL“. Проверете дефинициите на вашите таблици с SHOW CREATE TABLE table_name; . Обърнете внимание на всички полета, дефинирани с NOT NULL .

Справочно ръководство за MySQL 5.6:13.2.5 синтаксис INSERT заявява:

Това би означавало, че няма значение кой SQL режим използвате. Ако правите единичен ред INSERT (съгласно вашия примерен код) и вмъкване на NULL стойност в колона, дефинирана с NOT NULL , не би трябвало да работи.

На същия дъх, по ирония на съдбата, ако просто пропуснете стойността от списъка със стойности, ръководството на MySQL казва следното и SQL режимът има значение в този случай:

Следователно не можете да спечелите!;-) Шегувам се. Това, което трябва да направите, е да приемете, че NOT NULL в поле на MySQL таблица наистина означава няма да приема NULL стойност за поле, докато изпълнявам INSERT на един ред , независимо от SQL режим .'

Като се има предвид всичко казано, следното от ръководството също е вярно:

Така че, вземете сърце. Задайте вашите настройки по подразбиране в бизнес логиката (обекти) и оставете слоя данни да поеме посока от това. Базите данни по подразбиране изглеждат добра идея, но ако не съществуваха, бихте ли ги пропуснали? Ако дърво падне в гората...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо това SQL инжектиране е успешно, въпреки че SQL операторът генерира синтактична грешка?

  2. Итерация на MySQL схеми

  3. Как да използвам GROUP BY за конкатенация на низове в MySQL?

  4. Mysql:Как да заявя колона, чийто тип е бит?

  5. Преобразуване на десетичен знак, съхранен като varchar, в datetime