SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.12.2013 10:56:20

Cheb
Завсегдатай
Зарегистрирован: 27.12.2013
Сообщений: 28

создать поле с ограничением

Пытаюсь создать поле с ограничением. Чтобы в него можно было помещать значение больше 0 и меньше 8. Пишу так. Создается таблица, но записывать можно какие угодно значения.

CREATE TABLE  table1
        (city     char(10) ,
         filed1     decimal
        CHECK (filed1 > 0 AND filed1 < 8)
         );


такой путь тоже не работает

ALTER TABLE   table1  ADD CONSTRAINT CHECK (comm < 1);


У меня версия MySQL 5.5  InnoDB

прочитал вот тут  http://www.php.su/mysql/manual/?page=CREATE_TABLE  , что

Выражения FOREIGN KEY, CHECK и REFERENCES фактически ничего не делают. Они введены только из соображений совместимости, чтобы облегчить перенос кода с других SQL-серверов и запускать приложения, создающие таблицы со ссылками.

Так что нельзя использовать ограничения в современных MySQL? И как быть если надо?

Неактивен

 

#2 27.12.2013 13:04:20

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: создать поле с ограничением

Лучше обращаться к официальной документации wink.
http://dev.mysql.com/doc/refman/5.5/en/ … table.html

Foreign key и references работают только для innodb, для остальных типов таблиц они существуют лишь формально.

Check constraint, увы, в MySQL существует лишь формально, для всех типов таблиц.
Так что, боюсь, только триггером его можно эмулировать sad. Что-нибудь типа

DELIMITER $$
CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `Test`
FOR EACH ROW
BEGIN
    IF CHAR_LENGTH( NEW.ID ) < 4 THEN
    SIGNAL SQLSTATE '12345'
        SET MESSAGE_TEXT := 'check constraint on Test.ID failed';
    END IF;
END$$  
DELIMITER ;


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 27.12.2013 13:18:40

Cheb
Завсегдатай
Зарегистрирован: 27.12.2013
Сообщений: 28

Re: создать поле с ограничением

спасибо. классный форум.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson