当前位置:
  1. 魔豆IT网
  2. 系统教程
  3. MySQL
  4. 插入数据
  5. 正文

MYSQL插入数据时防止重复命令代码

insert into songinfo(songname,songtime,songpath) select 'aaa','bb' ,'cc' from dual where not exists(select * from songinfo where songname='123')

//上述命令在MYSQL3.x版本上不能执行,5.0.24的可以

比如我的Mysql当中某database存在url这张表,现在要有C API 将url,url_hash,domain这三个变量的值插入到数据库中,url_hash是主键,本来为了不至插入重复项,应该判断一下的,现在只要这一条SQL语句就行了,什么都不要管,减少了大量的查询和判断工作,我只能说一句:太爽了。如下:

SQL语句:

insert into TABLE(FIELD0,FIELD1...) select VALUE0,VALUE1 ,... from dual where not exists(select * from TABLE where FIELDN=VALUEN)

代码:

int store_url(char *url)

{

char *key, url_hash[HASHLEN], domain[DOMAINLEN], sqlstr[SQLSTRLEN];

......

sprintf (sqlstr, "insert into url(url,url_hash,domain) select '%s','%s','%s' from dual where not exists(select * from url where url_hash='%s') ", url, url_hash, domain, url_hash);

if (mysql_query (conn, sqlstr)) //大部分情况下失败是由于数据库关闭,所以可以在以下添加上再连接MySQL的代码,不赘写!

{

printf ("Error:%s\n", mysql_error (conn));

return;

}

}

清空表,在SQL和ACCESS中一般是delete * from tablename

而在MySQL中上述命令是不受支持的,

如下:

1,TRUNCATE TABLE TABLENAME

2,DELETE FROM TABLENAME

相关阅读

《MYSQL插入数据时防止重复命令代码》由网友“如也”推荐。

转载请注明:http://www.modouwifi.com/jiaocheng/052010SM2021.html