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

Зададох MySQL колона на NOT NULL, но все пак мога да вмъкна празна стойност

ПРАЗНИ СТРУНИ

В ORACLE се използва празен низ за представяне НУЛА. На практика във всичко останало обаче празният низ все още е низ и следователно не е NULL.


INTS

Във вашия случай всъщност вмъквате STRINGS в колона INT. Това налага имплицитно CAST операция.

Когато вашата RDBMS преобразува низа '' към INT трябва да получи стойността 0. Тъй като 0 не е NULL, това се вмъква.

По-валиден тест би бил:

INSERT INTO `plekz`.`countries` (`Column1 ` , `Column2`)
VALUES (66, NULL);


РЕДАКТИРАНЕ

Съжалявам, само наполовина прочетох въпроса ви. Питате също как да спрете '' се вмъква.

Първият ви проблем е, че вмъквате STRINGS и таблицата е дефинирана като имаща INT полета. Можете да поставите ограничения върху данните, които се вмъкват, но тези ограничения ще приложат стойността след преобразуване в INT. Освен ако не искате да предотвратите стойността 0 от също да бъде вмъкнат, не можете да направите нищо с таблицата, за да предотвратите този сценарий.

Най-добрият ви залог е да разгледате защо вмъквате низове на първо място. Можете да използвате съхранена процедура, която приема и проверява низовете, преди да ги преобразува в INT и след това да ги вмъкне. Или, още по-добре, можете да направите проверките в клиентското си приложение.

Технически налична опция е да направите полетата CHAR полета, след което да поставите ограничение върху полетата, предотвратявайки '' от вмъкване. Бихсилно препоръчвам против това.



  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:Как мога да актуализирам стойност в колона само ако тази стойност е нула?

  2. Как да проверя дали съществува ред в MySQL? (т.е. проверете дали съществува имейл в MySQL)

  3. Модел на база данни EAV, списък на записите според търсенето

  4. В MySQL защо това IF връща false?

  5. Инсталиране на уеб сървър във FreeBSD 6.0 с Apache 2.2, MySQL 5.0 и PHP 5 – част 3