假设我有一张桌子:
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”的每个实例,我希望能够拥有唯一且唯一唯一的“指示符”。有意义吗?
谢谢
答案 0 :(得分:5)
您可以拥有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 :(得分:1)
UNIQUE( ml_id, telco, designator )
答案 2 :(得分:0)
如果在多个列上添加唯一索引,则可以定义唯一的配对。例如,您可以在ml_id, designator
上添加一个索引,强制配对是唯一的。
据我所知,NULL
值不受限制。