powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как поставить ограничение на ввод
9 сообщений из 9, страница 1 из 1
Как поставить ограничение на ввод
    #40023057
Skroubar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Я не знаю как правильно выразиться, допустим есть таблица.
И например если в колонку Type я ставлю 1 , то в колонку Variety я могу поставить только 4.
Это как то можно реализовать?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE `order` (
  `ID_ORDER` int(74) NOT NULL,
  `TYPE` int(50) DEFAULT NULL,
  `VARIETY` int(50) DEFAULT NULL,
  `SIZE` int(50) DEFAULT NULL,
  `MATERIAL` int(50) DEFAULT NULL,
  `AMOUNT_MAT1` float DEFAULT NULL,
  PRIMARY KEY (`ID_ORDER`),
  KEY `order_2` (`MATERIAL`),
  KEY `order_1` (`SIZE`),
  CONSTRAINT `order_1` FOREIGN KEY (`SIZE`) REFERENCES `fitting` (`FITTING_ID`),
  CONSTRAINT `order_2` FOREIGN KEY (`MATERIAL`) REFERENCES `storage` (`ID_STORAGE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023063
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skroubar,

check constraint (строго 8.0.16 и новее)
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023068
Skroubar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij, У меня по программе вуза изучение бд, и там нам сказали вот качайте denwer и sqlyog и работайте. В денвере написано что версия sql 5.5.25. Я это к тому, что я вообще не понимаю как эта система работает, с этими локалхостами и прочем, вы мне можете подсказать что мне нужно скачать что бы я мог выполнять запросы нормальные?
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023073
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skroubar,

вообще-то это не совсем "виндовый софт", если уж честно .. денвер - это что? Впрочем, почитал .. н-да .. тяжела же доля виндузятника :(

В целом, совет: ставьте себе в отдельный раздел Линукс, проще всего - Ubuntu, последний релиз 20.04, насколько помню.. И изучайте полноценную вебразработку. У меня сыну уже 14, он уже 4-й год живет на Линуксе и уже сам себе ставит все что ему вздумается .. не далее как вчера:
Пап, я тут хочу мышиный кликер на Джаве сделать, не могу фоном запустить процесс джавы .. нашел тут программку к икс-серверу, которая делает то что мне надо, а можно ли запускать её из под Джава программы через экзек и баш?
... слегка выпал в осадок.

Осваивайте! Не так оно страшно как кажется. :)

В целом, по вашему вопросу: можно сделать так, чтобы при появлении какого-то значения в одном столбце, проверялись значения соседнего и ограничивать вставку, если оно не проходит по правилам проверки. Но .. это достаточно сложно: придется писать свои триггеры, не уверен что constraint такое способен делать.
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023126
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skroubar
У меня по программе вуза изучение бд, и там нам сказали вот качайте denwer и sqlyog и работайте. В денвере написано что версия sql 5.5.25.
типичная проблема - преподаватели сами так себе специалисты. Если изучается именно БД - за каким хреном денвер? с нафиг ненужными в нём веб-сервером и пыхом?

Снести нафиг этот Денвер. Загрузить и установить только MySQL. В его составе установится и клиент командной строки. Который запускается сразу после установки и нормально работает. Не нравится командная строка? есть Workbench, устанавливаемый в составе клиентского ПО, если указать, можно использовать и клиенты третьей фирмы (скажем, HeidiSQL).

=====

на указанной версии задачу можно решить только парой BEFORE INSERT и BEFORE UPDATE триггеров.
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023363
Skroubar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, сделал
Код: sql
1.
2.
3.
ALTER TABLE `order`
ADD CONSTRAINT CHK_TYPEVARIETY
CHECK (`variety` IN ('1','2','3','4','5','6','12') OR 'type' = '1');
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023389
Skroubar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя нет, херня получилась)))
Как поставит условие именно, что при тип=1 вариация может быть от 1 до 6 и 12
при тип=2, вариация от 7 до 10
Я попытался и так и сяк, не получается, вот последняя попытка
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ALTER TABLE `order`
ADD CONSTRAINT CHK_TYPEVARIETY
CHECK ((`variety` ='1' AND 'type' = '1') 
	OR(`variety` ='2' AND 'type' = '1')
    OR(`variety` ='3' AND 'type' = '1')
    OR(`variety` ='4' AND 'type' = '1')
    OR(`variety` ='5' AND 'type' = '1')
    OR(`variety` ='6' AND 'type' = '1')
    OR(`variety` ='12' AND 'type' = '1')
    OR(`variety` ='7' AND 'type' = '2')
    OR(`variety` ='8' AND 'type' = '2')
    OR(`variety` ='9' AND 'type' = '2')
    OR(`variety` ='10' AND 'type' = '2')
    OR(`variety` ='11' AND 'type' = '2'));


Error Code: 3819. Check constraint 'CHK_TYPEVARIETY' is violated.
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023403
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
CHECK (    (type=1 AND variety IN (1,2,3,4,5,6,12))
        OR (type=2 AND variety IN (7,8,9,10))
      )
...
Рейтинг: 0 / 0
Как поставить ограничение на ввод
    #40023407
Skroubar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Огромное спасибо
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как поставить ограничение на ввод
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]