这是我的users表:
CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(64) NOT NULL,
  `password` varchar(64) default NULL,
  `role` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;这是我的orders表
CREATE TABLE `orders` (
  `id` int(11) NOT NULL auto_increment,
  `user_id` int(11) NOT NULL,
  `keyword1` varchar(100) default NULL,
  `keyword2` varchar(100) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `uk_user_id_keyword12` (`user_id`,`keyword1`,`keyword2`),
  CONSTRAINT `fk_users_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;我现在users表中插了一条记录:insert into users(username,password,role) values('test','123',0);然后在orders表中插入记录:
insert into orders(user_id,keyword1,keyword2) values(1,'中国','奥运');
insert into orders(user_id,keyword1,keyword2) values(1,'中国','奥运'); //当插入相同记录会有约束限制,正合我意但是如果
insert into orders(user_id,keyword1) values(1,'中国');
insert into orders(user_id,keyword1) values(1,'中国');然后
select * from orders;会出现如下记录:
---------------------
id  user_id  keyword1  keyword2
---------------------
1     1        中国       奥运
2     1        中国       NULL
3     1        中国       NULL
---------------------
而id为2和3这两条记录相同,另外我的keyword2有需要为空的情况的,所以不能将keyword2设置为not null
请问:在keyword2为null的情况下,有什么办法可以限制约束类似id为2和3的重复吗?