13°C
завтра: 5°C
Погода в Перми
13°C
вечером12°C
ночью4°C
завтра5°C
Подробно
 63,96
−0.1086
Курс USD ЦБ РФна 20 апреля
63,9602
−0.1086
 71,92
−0.3208
Курс EUR ЦБ РФна 20 апреля
71,9232
−0.3208
  • activist

    Сообщений: 133

    mySQL 5a под altlinux.
    CREATE TABLE `TEST`(
    `Idx` int NOT NULL auto_increment,
    `DAT` date NOT NULL,
    `KOD` int NOT NULL,
    `NAIM` varchar(64) NULL,
    `ITOG` FLOAT NOT NULL ,
    PRIMARY KEY (`Idx`),
    CHECK (`ITOG`>0)
    ) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = cp1251 COLLATE cp1251_general_ci;

    insert into `TEST` (`naim`) VALUES ('test1');

    Почему такой insert выполняется? Почему, если нет дефолтных значений в not null полях он вставляет нули. Но даже если он вставил нуль, то почему insert не зарезался на проверке CHECK?

    Toyota Corolla 2002 1ZZ FF, Toyota RAV4 2000 1AZ-FSE 4WD
    Меньше нервов потратишь - дальше уедешь!

  • experienced

    Сообщений: 931

    в 5 мускуле check ничего не делает, а введен только для совместимости.
    not null задает, как раз что поле не может быть пустым, и если не выставлено значение по умолчанию, то в зависимости от типа поля туда что-то вносится, например для int ноль.

    вот такая загагулина получается...

Записей на странице:

Перейти в форум

Модератор: