ПРАЗНИ СТРУНИ
В 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 полета, след което да поставите ограничение върху полетата, предотвратявайки ''
от вмъкване. Бихсилно препоръчвам против това.