Погода: -12°C
  • 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
    Меньше нервов потратишь - дальше уедешь!

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

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

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

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

Модератор: