mysql replace into語句學習

2022-03-02 07:22:58 字數 1097 閱讀 9784

實踐過程:

id 是主鍵

測試方式一,插入索引值是一樣的:

replace into  fanwe_order(id,sn)  values('33','測試replace into 使用')  結果:受影響的行數:

2select * from fanwe_order where sn='測試replace into 使用'

結果:查出 一行記錄

測試方式二,插入主鍵值是重複的:

將插入id指定為34。這樣不與資料表中的id有重複現象,之後執行查詢

replace into  fanwe_order(id,sn)  values('34','測試replace into 使用')

結果:沒有新插入一條資料。還是替換了原來的那行。id從33變為34

原因分析:

手冊上提到,如果表中的乙個舊記錄與乙個用於primary key或乙個unique索引的新記錄具有相同的值。

意,除非表有乙個primary key或unique索引,否則,使用乙個replace語句沒有意義。

剛才測試的例子中。id是主鍵,sn是唯一索引。測試方式一是出現主鍵值一樣,測試方式二是出現唯一索

引值一樣。兩種情況都出現了replace

理解:插入資料的時候,假如遇到主鍵值或者唯一索引鍵值一樣的話。那麼就使用替代(replace單詞的含

義反應了其作用)的方式,刪掉原來的。以當前插入的行進行替代(所以需要同時具有insert和delete許可權

)先刪除後插入新的。正好說明了我看到的現象:顯示受影響的行數是2

兩種情況之一使用replace語句才會出現替換:1.主鍵值相同 2.遇到設定為唯一字段值相同情況。

遇到重複的值,則跳過不插入的處理辦法

重複的值,是指表的唯一索引字段(主鍵也是唯一索引字段),遇到值是重複的情況。

insert ignore into `table_name` (`email`, `phone`, `user_id`) values ('[email protected]', '99999', '9999');

如何判斷有沒有插入成功呢?遇到重複值,就沒有插入成功,此時返回的受影響行數是0。插入成功,返回的受影響行數是1。

mysql replace into用法詳細說明

replace的執行與insert很相似。只有一點例外,假如表中的乙個舊記錄與乙個用於primary key或乙個unique索引的新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。注意,除非表有乙個primary key或unique索引,否則,使用乙個replace語句沒有意義。該 語句會...

mysql replace into用法詳細說明

replace的執行與insert很相似。只有一點例外,假如表中的乙個舊記錄與乙個用於primary key或乙個unique索引的新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。注意,除非表有乙個primary key或unique索引,否則,使用乙個replace語句沒有意義。該 語句會...

MySQL Replace INTO的高階使用

replace的執行與insert很相像。只有一點除外,如果表中的乙個舊記錄與乙個用於primary key或乙個unique索引的新記錄具有相同的值,則在新記錄被插入之前,舊記錄被刪除。請參見13.2.4節,insert語法 注意,除非表有乙個primary key或unique索引,否則,使用乙...