Benzersiz bir dizinde birden çok sütun kullanıyorsanız ve bu sütunlardan en az biri zorunluysa (yani, zorunlu bir form alanı), dizindeki diğer sütunları NULL olarak ayarlarsanız, çoğaltılan satırlarla karşılaşabilirsiniz. Bunun nedeni, NULL değerlerin benzersiz sütunlarda yok sayılmasıdır. Bu durumda, yinelenen satırları önlemek için benzersiz dizinin diğer sütunlarında boş dizeler kullanın.
EŞSİZ BİR DİZİNDE SÜTUNLAR:
(event_type_id, event_title, tarih, konum, url)
ÖRNEK 1:
(1, 'Barbekü', '2018-07-27', boş, boş)
(1, 'Barbekü', '2018-07-27', boş, boş) // izin verildi ve çoğaltıldı.
ÖRNEK 2:
(1, 'Barbekü', '2018-07-27', '', '')
(1, 'Barbekü', '2018-07-27', '', '') // çoğaltıldığı için izin VERİLMEZ.
İşte bazı kodlar:
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`event_id` int(11) DEFAULT NULL,
`event_title` varchar(50) DEFAULT NULL,
`date` date DEFAULT NULL,
`location` varchar(50) DEFAULT NULL,
`url` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `event_id` (`event_id`,`event_title`,`date`,`location`,`url`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Şimdi, yinelenen satırlara izin vereceğini görmek için bunu ekleyin:
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-27', NULL, NULL);
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-27', NULL, NULL);
Şimdi bunu ekleyin ve izin verilmediğini kontrol edin:
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-28', '', '');
INSERT INTO `test` (`id`, `event_id`, `event_title`, `date`, `location`,
`url`) VALUES (NULL, '1', 'BBQ', '2018-07-28', '', '');
Yani, burada doğru ya da yanlış yoktur. İş kurallarınızda neyin en iyi olduğuna siz karar verirsiniz.