MySQL 當記錄不存在時插入,當記錄存在時更新.........具體解決辦法如下:
1、INSERT INTO… ON DUPLICATE KEY UPDATE使用環(huán)境:
首先建表(先說UNIQUE):
1、INSERT INTO… ON DUPLICATE KEY UPDATE
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會導致在一個UNIQUE索引或PRIMARY KEY中出現(xiàn)重復值,則執(zhí)行舊行UPDATE。
例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個語句具有相同的效果:
create table abin1(
id int not null unique,
username varchar(100),
password varchar(100)
)
id int not null unique,
username varchar(100),
password varchar(100)
)
insert into abin1 (id,username,password) values (1,'abin1','varyall1') on duplicate key update username='abin12',password='varyall12';
其次再說主鍵(primary key)類型的:
create table abin2(
id int not null,
username varchar(100),
password varchar(100),
constraint pk_abin2 primary key(id)
)執(zhí)行語句:
insert into abin2 (id,username,password) values (1,'abin1','varyall1') on duplicate key update username='abin12',password='varyall12';
2、插入單行記錄:如果不存在插入記錄,如果存在記錄的話,就不再插入
insert into abin2 (id,username,password) select 1,'abin12','varyall12' from dual
where not exists (select k.* from abin2 k where k.id=1)
3、示例一:插入多條記錄假設有一個主鍵為 id 的 abin2表,可以使用下面的語句:
insert into abin2 (id,username,password) select 1,'abin12','varyall12' from dual
where not exists (select k.* from abin2 k where k.id=1)
4、我們在使用數據庫時可能會經常遇到這種情況。如果一個表在一個字段上建立了唯一索引,當我們再向這個表中使用已經存在的鍵值插入一條記錄,那將會拋出一個主鍵沖突的
錯誤。當然,我們可能想用新記錄的值來覆蓋原來的記錄值。如果使用傳統(tǒng)的做法,必須先使用DELETE語句刪除原先的記錄,然后再使用INSERT插入新的記錄。而在MySQL中為
我們提供了一種新的解決方案,這就是REPLACE語句。使用REPLACE插入一條記錄時,如果不重復,REPLACE就和INSERT的功能一樣,如果有重復記錄,REPLACE就使用新記錄的值
來替換原來的記錄值。
具體用法:
replace into abin2 (id,username,password) values (2,'abin','varyall')
http://blog.csdn.net/kesaihao862/article/details/6718443