我们在做数据库的数据保存时经常会用到相关的服务器脚本来防止重复保存相同数据,今天我们用insert if not exists条件来防止插入重复记录.
可以通过使用 EXISTS 条件句防止插入重复记录.
示例一:插入多条记录,假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:
Code:代码如下:
- INSERT INTO clients
- (client_id, client_name, client_type)
- SELECT supplier_id, supplier_name, ’advertising’
- FROM suppliers
- WHERE not exists (select * from clients
- where clients.client_id = suppliers.supplier_id);
示例二:插入单条记录
Code:代码如下:
- INSERT INTO clients
- (client_id, client_name, client_type)
- SELECT 10345, ’IBM’, ’advertising’
- FROM dual
- WHERE not exists (select * from clients
- where clients.client_id = 10345);
使用 dual 做表名可以让你在 select 语句后面直接跟上要插入字段的值,即使这些值还不存在当前表中.
下面看php mysql处理访求,代码如下:
- $title ='www.phpfensi.com';
- $sql = "Select * from tablename where title='$title'";
- $query = mysql_query( $sql );
- if( mysql_num_rows( $query ) )
- {
- exit('不能重复插入相同的记录');
- }
- else
- {
- $sql ="insert tablename values('$title')";
- mysql_query( $sql );
- exit('保存记录成功');
- }
这种方的不好之处在于多次查询了数据库,并且代码也冗余了,好了到底你用那排除重复数据的方法你自己根据自己的情况而定吧. |