有一个表A, userid 字段是唯一索引,现在要判断 userid=123456用户,是否存在表A中,如果不存在,则把这个用户插入表A。有两种方式
1. select * from A where userid=123456;
if (返回为空)
insert into A (userid) values(123456);
else
return;
2. 不管有没有直接insert,如果报唯一索引异常,则表示存在,如果没报异常,就已经插入了。
我个人感觉第二种方法代码比较简单,但是担心有什么隐患。第一种方法,无形中会增加检索开销。
请大神指点下
1. select * from A where userid=123456;
if (返回为空)
insert into A (userid) values(123456);
else
return;
2. 不管有没有直接insert,如果报唯一索引异常,则表示存在,如果没报异常,就已经插入了。
我个人感觉第二种方法代码比较简单,但是担心有什么隐患。第一种方法,无形中会增加检索开销。
请大神指点下
解决方案 »
- 各位大侠们 帮帮忙啊 mysql4.0 两个表更新问题
- 有哪种免费数据库对分布式应用支持得非常好的?
- 请教多表查询中的索引及效率问题!
- 语句:INSERT INTO 的问题
- mssql 转mysql自定义函数的问题
- 谁有mysql workbench方面的资料啊?或者谁能讲解下怎么用啊?
- mysql中int类型检测为空的条件?
- myql 类似bulkcopy 之类的批量插入功能
- 关于MYSQL数据库的完整性维护(特别是崩溃恢复)
- mysql更新blob字段出现‘数据类型不匹配’
- mysql 如果解决并非insert的数据主键冲突问题?
- windows系统下面有什么mysql按数据库备份sql的方法吗?
不过其实可以用INSERT IGNORE INTO,只是当时不知道这个命令。
可以考虑用mysql的 replace into ,如果存在就update,如果不存在就插入
第一种方法也不存在效率问题,更加正规一些