国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql insert的幾點操作(DELAYED,IGNORE,ON DUPLICATE KEY UPDATE )

2024-07-24 12:43:46
字體:
來源:轉載
供稿:網友
INSERT語法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
一、DELAYED 的使用
使用延遲插入操作
DELAYED調節符應用于INSERT和REPLACE語句。當DELAYED插入操作到達的時候,
服務器把數據行放入一個隊列中,并立即給客戶端返回一個狀態信息,這樣客戶
端就可以在數據表被真正地插入記錄之前繼續進行操作了。如果讀取者從該數據
表中讀取數據,隊列中的數據就會被保持著,直到沒有讀取者為止。接著服務器
開始插入延遲數據行(delayed-row)隊列中的數據行。在插入操作的同時,服務器
還要檢查是否有新的讀取請求到達和等待。如果有,延遲數據行隊列就被掛起,
允許讀取者繼續操作。當沒有讀取者的時候,服務器再次開始插入延遲的數據行。
這個過程一直進行,直到隊列空了為止。
幾點要注意事項:
· INSERT DELAYED應該僅用于指定值清單的INSERT語句。服務器忽略用于INSERT DELAYED...SELECT語句的DELAYED。
· 服務器忽略用于INSERT DELAYED...ON DUPLICATE UPDATE語句的DELAYED。
· 因為在行被插入前,語句立刻返回,所以您不能使用LAST_INSERT_ID()來獲取AUTO_INCREMENT值。AUTO_INCREMENT值可能由語句生成。
· 對于SELECT語句,DELAYED行不可見,直到這些行確實被插入了為止。
· DELAYED在從屬復制服務器中被忽略了,因為DELAYED不會在從屬服務器中產生與主服務器不一樣的數據。
注意,目前在隊列中的各行只保存在存儲器中,直到它們被插入到表中為止。這意味著,如果您強行中止了mysqld(例如,使用kill -9)
或者如果mysqld意外停止,則所有沒有被寫入磁盤的行都會丟失。
二、IGNORE的使用
IGNORE是MySQL相對于標準SQL的擴展。如果在新表中有重復關鍵字,
或者當STRICT模式啟動后出現警告,則使用IGNORE控制ALTER TABLE的運行。
如果沒有指定IGNORE,當重復關鍵字錯誤發生時,復制操作被放棄,返回前一步驟。
如果指定了IGNORE,則對于有重復關鍵字的行,只使用第一行,其它有沖突的行被刪除。
并且,對錯誤值進行修正,使之盡量接近正確值。
insert ignore into tb(...) value(...)
這樣不用校驗是否存在了,有則忽略,無則添加
三、ON DUPLICATE KEY UPDATE的使用
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會導致在一個UNIQUE索引或PRIMARY KEY中出現重復值,則執行舊行UPDATE。例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個語句具有相同的效果:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连城县| 年辖:市辖区| 革吉县| 汾阳市| 瑞丽市| 将乐县| 宁强县| 凉山| 德惠市| 遵化市| 海原县| 迁西县| 民权县| 中山市| 宿松县| 托克逊县| 绥芬河市| 永济市| 无棣县| 衡水市| 常山县| 高要市| 上栗县| 霍城县| 于都县| 博客| 马尔康县| 漳平市| 芦溪县| 凤阳县| 任丘市| 玉龙| 洱源县| 古田县| 漾濞| 土默特右旗| 昆明市| 白银市| 新巴尔虎右旗| 贵南县| 台北市|