Может ли mySQL определить определенные столбцы как UNIQUE на основе другого столбца? - PullRequest
1 голос
/ 05 августа 2011

Предположим, у меня есть таблица:

  CREATE TABLE `ml_vendor_refs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ml_id` int(11) NOT NULL,
  `ven_id` int(11) NOT NULL,
  `designator` int(4) NOT NULL,
  `telco` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

Как видите, "id" является основным и AI. Тем не менее, я хочу иметь возможность добавить несколько строк «указателя», которые я не буду дублировать, основываясь на родительском элементе «ml_id» и «telco». Например:

"id"    "ml_id" "ven_id"    "designator"    "telco"
"1"     "5144"    "3"            "1"           "0"
"2"     "5144"    "7"            "2"           "0"
"3"     "5144"    "44"           "3"           "0"
"4"     "5144"    "49"           "4"           "0"

для каждого экземпляра «ml_id» и логического «telco» я хочу иметь уникальные и ТОЛЬКО уникальные «указатели». Имеет смысл?

Спасибо

Ответы [ 3 ]

5 голосов
/ 05 августа 2011

Вы можете иметь индекс UNIQUE, который охватывает несколько столбцов. Результатом будет ограничение, заключающееся в том, что одно и то же значение может появляться в одном столбце несколько раз, но одна и та же комбинация значений не может появляться в указанных столбцах.

CREATE TABLE `ml_vendor_refs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ml_id` int(11) NOT NULL,
  `ven_id` int(11) NOT NULL,
  `designator` int(4) NOT NULL,
  `telco` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `designators` (`designator`,`ml_id`,`telco`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
1 голос
/ 05 августа 2011
UNIQUE( ml_id, telco, designator )
0 голосов
/ 05 августа 2011

У вас может быть определено уникальное сопряжение, если вы добавите уникальный индекс для нескольких столбцов. Например, вы можете добавить индекс на ml_id, designator, который заставит пары быть уникальными.

Насколько я знаю, NULL значения не подлежат уникальным ограничениям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...