用PHP+MYSQL组合做学校给的一个项目时遇到了一点困难,需要导入学生们的学分成绩的时候发现用以往的insert into table(column_name) values (value) ;
行不通,因为往往这个学生导入成绩时不只需要导入一次,或者是老师误操作那么很可能在数据库形成完全相同的两条记录。也就是说光用insert行不通。于是我将数据表的两个字段设为unique key索引。以下是我的数据表的结构:
create table student_users(student_num varchar(64),
student_name varchar(64),
science_mark double(2,1) unsigned default 0,
culture_mark double(2,1) unsigned default 0,
bussine_mark double(2,1) unsigned default 0,
skill_mark double(2,1) unsigned default 0,
society_mark double(2,1) unsigned default 0,
sum_mark double(3,1) unsigned default 0,
year varchar(10),
unique key dir(student_num,year));/*学生表保存学生基本信息*/
设置为unique key的dir确认了student_num,year两个字段的唯一值,这个时候再将insert into table(column_name) values (value) ;改成replace into table(column_name) values (value);replace into 关键字提供了更方便的功能,replace会先根据索引查询数据表里的数据,如果根据索引查询到一样的记录就更新(实际上是先删除掉记录,然后再执行insert插入新的记录),如果没有查询到就直接insert。就这样顺利的防止了数据表中有重复数据插入。