想往表中插入一條數據,如果表中沒有該條數據才插入,如果已經存在該條數據就不插入。
該怎么處理?
一個比較笨的辦法,是先用select查找表中是否已經存在該數據,然后再根據返回的結果決定是否insert。這樣做一來效率會降低,二來,如果在select和insert執行期間,又有其他用戶進行了insert操作,插入了一條相同的數據,仍然會出錯。
正確的解決方法是:
首先,在創建表時,將不需要重復的字段設置為unique,然后在插入時,使用insert ignore語句。
例如:(數據庫用的是mysql5)
創建一張表用來存儲用戶:
create table user_info
(
uid mediumint(10) unsigned NOT NULL auto_increment primary key,
last_name char(20) not null,
first_name char(20) not null,
unique ( last_name, first_name)
);
插入數據:
insert
ignore into user_info (last_name,first_name) values ('x','y');
//這樣一來,如果表中已經存在last_name='x'且first_name='y'的數據,就不會插入,如果沒有就會插入一條新數據。