CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cid` char(255) NOT NULL,
`weibo_id` char(255) NOT NULL,
`keyword_id` varchar(16) DEFAULT NULL,
`keyword_sign` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `key_id` (`cid`,`weibo_id`,`keyword_id`,`keyword_sign`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8在执行:
insert into test set cid='aa', weibo_id='bb'; 的时候, 为什么 能不断的重复插入, 该怎么改这个表结构呢?
`id` int(11) NOT NULL AUTO_INCREMENT,
`cid` char(255) NOT NULL,
`weibo_id` char(255) NOT NULL,
`keyword_id` varchar(16) DEFAULT NULL,
`keyword_sign` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `key_id` (`cid`,`weibo_id`,`keyword_id`,`keyword_sign`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8在执行:
insert into test set cid='aa', weibo_id='bb'; 的时候, 为什么 能不断的重复插入, 该怎么改这个表结构呢?
检查一下,应该是有重复记录了。
复合键 如果其中的字段有null的话,即使其他的字段的值是相同的, 它也认为联合键值是不一样的所以你应该:
insert into test set cid='aa', weibo_id='bb',weibo_id='',keyword_sign=''或者直接将后两个字段改为NOT NULL
现在是输入相同的,
`keyword_id` varchar(16) DEFAULT NULL,
`keyword_sign` varchar(32) DEFAULT NULL,\
这两个字段不赋值的话 , 一直都能插入相同的元素, 我现在不希望这样
那你再建立一个约束得了
UNIQUE KEY `key_id2` (`cid`,`weibo_id`)