Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Что случилось с Чеком?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Check не проходит
Contr
Отправлено: 04 Октября, 2011 - 08:26:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


Помог: 1 раз(а)




CREATE TABLE Tubelist
(tnum INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Id',
tname CHAR( 15 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL UNIQUE COMMENT 'Номер трубы',
own integer NOT NULL DEFAULT 1,
short integer NOT NULL DEFAULT 0,
CONSTRAINT invalid_short CHECK (short IN (0,1)),
FOREIGN KEY own_link (own) REFERENCES owness (own)
)

Вводим далее
insert into tubelist (tname, short) values (123001.1, 34). И это вводится!

Какого спрашивается *** вставляется значение 34, если я поставил ограничение CHECK (short IN (0,1)
Что не так?
 
 Top
Мелкий Супермодератор
Отправлено: 04 Октября, 2011 - 10:19:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Если всего 2 значения, то почему не enum('0','1'), bool там?


-----
PostgreSQL DBA
 
 Top
Contr
Отправлено: 04 Октября, 2011 - 11:37:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


Помог: 1 раз(а)




Мелкий пишет:
Если всего 2 значения, то почему не enum('0','1'), bool там?


Согласен, что у меня два значения, можно было и двоичный тип присвоить. А если бы мне понадобилось бы видеть значения из ряда "Москва", "Рига", "Киев", тогда то как? Вообще check есть в MySQL?
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 11:43:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




enum это не двоичный тип а перечисляемый
как раз то что вам нужно
http://mysql[dot]ru/docs/man/ENUM[dot]html
 
 Top
Мелкий Супермодератор
Отправлено: 04 Октября, 2011 - 11:54:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Contr пишет:
А если бы мне понадобилось бы видеть значения из ряда "Москва", "Рига", "Киев"

enum.

Contr пишет:
Вообще check есть в MySQL?

Всё, что есть описано там: http://dev[dot]mysql[dot]com/doc/refman/5[dot]1/en/
Мне сходу не удалось найти синтаксис, что вы используете.


-----
PostgreSQL DBA
 
 Top
Contr
Отправлено: 04 Октября, 2011 - 12:08:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


Помог: 1 раз(а)




Хорошо. А если мне надо проверить значение поля на условие

CREATE TABLE Salespeople
(snum integer NOT NULL PRIMARY KEY,
sname char(15) CHECK (sname BETWEEN 'AA' AND 'MZ'),
city char(15),
comm decimal NOT NULL DEFAULT = .10);
тогда как?

Кстати, я в refman 5.1 пользовался - искал ничего не нашел. Есть что-то типа CHECK TABLE, но это не то. Google не помогает
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB