У меня есть таблица MySql, созданная следующим образом:
CREATE TABLE `sourcelinks` (
`idSourceLinks` int(10) unsigned NOT NULL AUTO_INCREMENT,
`SrcId` int(11) NOT NULL DEFAULT '-1',
`LinkId` int(11) DEFAULT '-1',
`ImageId` int(11) DEFAULT '-1',
`DownloadId` int(11) DEFAULT '-1',
`VideoId` int(11) DEFAULT '-1',
PRIMARY KEY (`idSourceLinks`),
UNIQUE KEY `idSourceLinks_UNIQUE` (`idSourceLinks`),
UNIQUE KEY `UniqueCombination` (`SrcId`,`LinkId`,`ImageId`,`DownloadId`,`VideoId`)
) ENGINE=InnoDB AUTO_INCREMENT=491 DEFAULT CHARSET=latin1;
Как вы видите, у меня есть объединенный УНИКАЛЬНЫЙ ИНДЕКС по SrcId, LinkId, ImageId, DownloadId и VideoId. Теперь я понимаю, что если SrcId и LinkId имеют те же значения, что и другая строка, тогда будет выброшено исключение DUPLICATE INSERT. Это будет то же самое, что и SrcId и ImageId, или SrcId и DownloadId et c.
ВОПРОСЫ:
- Итак, почему это на самом деле не работает? Я получаю несколько столбцов с одинаковыми значениями, то есть несколько SrcId = 1 и LinkId = 1, а другие столбцы в индексе равны нулю?
- И как мне исправить это, чтобы каждая строка могла иметь только уникальные значения для столбцов