本人工作中的实际应用.在采集数据的时候,要求数据采集以后,不能重复.同时也要求有多个实例同时运转,保证数据采集的连续性.因此总结了一下,做成了如下的小试验.核心代码如下:
表结构:只有3个字段
id,name,password
CREATE TABLE `tt` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
sql语句
1)推荐
insert ignore into tt(name,password) values('phl','123')
2)不推荐,因为insert的时候select,会锁定select的表
insert into tt(name,password) select 'phl','123' from dual where not exists(select * from tt where name='phl' and password='123')
这个SQL语句的含义是,如果插入的数据 name='phl',password='123'不存在,则执行插入;
补充:
方法1里面,之所以没有过滤。是因为没有建立name与password的联合主建;