Я создал уникальный индекс, подобный этому:
ALTER TABLE items
ADD UNIQUE INDEX uni_item
(warehouse_id, width, height, depth, weight);
но я все еще могу добавлять дубликаты, почему это не работает?
Примечание:
В самой таблице также есть некоторые столбцы, которые здесь не включены, а warehouse_id - это внешний ключ, но эти вещи не должны иметь значения, верно?
Спасибо!
@ cularis: вот пример успешно добавленных дубликатов:
item_id, warehouse_id, width, height, depth, weight, date
1 4 100 100 100 14 2011-08-07 07:01:26
item_id, warehouse_id, width, height, depth, weight, date
6 4 100 100 100 14 2011-08-07 07:01:32
EDIT:
Добавление дополнительной информации по мере необходимости:
CREATE TABLE `items` (
`item_id` int(11) NOT NULL AUTO_INCREMENT,
`warehouse_id` int(11) NOT NULL,
`width` decimal(3,2) NOT NULL,
`height` decimal(3,2) NOT NULL,
`depth` decimal(3,2) NOT NULL,
`weight` decimal(3,2) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `uni_item` (`warehouse_id`,`width`,`height`,`depth`,`weight`),
KEY `warehouse_id` (`warehouse_id`),
CONSTRAINT `items_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouses` (`warehouse_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
INSERT INTO `main`.`items` (
`item_id` ,
`warehouse_id` ,
`width` ,
`height` ,
`depth` ,
`weight` ,
`date`
)
VALUES (
NULL , '4', 100, 100, 100, 14, CURRENT_TIMESTAMP
)