656
財經資訊
INSERT__數據操作語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
該語句用於添加一個或多個記錄到表。
格式
INSERT [INTO] tblname
[(colname,...)]
{VALUES|VALUE} ({expr | DEFAULT},...)
[ ON DUPLICATE KEY UPDATE
colname=expr
[, colname=expr] ... ] ;
或者
INSERT [INTO] tblname
[(colname,...)]
{VALUES|VALUE} (colvalues,...)
[ON DUPLICATE KEY UPDATE
colname=expr
[, colname=expr] ... ] ;
[(colname,...)]用於指定插入數據的列。
同時插入多列時,用“,”隔開。
支持ON DUPLICATE KEY UPDATE
Insert語句後麵不支持set操作
INSERT…ON DUPLICATE KEY UPDATE… 語句執行,affect row的計算:
在沒有設置client_capabilities 中CLIENT_FOUND_ROWS的情況下:
作為新行插入的話,affected_row= 1;
存在衝突行的情況下,如果更新前後數據相同的話, affected_row = 0; 否則affectd_row = 2;
如果設置了CLIENT_FOUND_ROWS:
作為新行插入的話,affected_row=1;
如果更新前後數據相同的話,affectd_row=1;
如果更新前後數據不相同的話,affected_row=2;
CLIENT_FOUND_ROWS的影響在於:不設置CLIENT_FOUND_ROWS的情況下,計算affected_row的值,隻計算實際更新了行數,而設置了CLIENT_FOUND_ROWS的話,會把所有touched行數(滿足衝突條件的行)都記上,而不管其是否發生了真正的數據修改。
示例
Oceanbase>show create table test;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
UNIQUE KEY `a_uniq` (`a`) BLOCK_SIZE 16384
) DEFAULT CHARSET = utf8mb4 REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
Oceanbase>insert into test values(1,2);
Query OK, 1 row affected (0.01 sec)
Oceanbase>insert into test values(1,3);
ERROR 1062 (23000): Duplicate entry '1' for key 'a_uniq'
Oceanbase>insert into test values(1,3) on duplicate key update a = a+1;
Query OK, 2 rows affected (0.01 sec)
Oceanbase>select * from test;
+------+------+
| a | b |
+------+------+
| 2 | 2 |
+------+------+
1 row in set (0.01 sec)
注意: 同時插入多個值時,如果這些值在不同的分區,會報錯。
Oceanbase>show create table tp;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tp | CREATE TABLE `tp` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE partition by hash(a) partitions 7 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
Oceanbase>insert into tp values(1,2),(2,3),(3,4);
ERROR 1235 (0A000): Insert data cross partition not supported
最後更新:2016-11-24 11:23:47
上一篇:
DROP VIEW__數據定義語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
下一篇:
UPDATE__數據操作語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
DeleteShard__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
主機新手使用指南__管理控製台_使用指南_雲虛機主機-阿裏雲
安裝 EDAS Agent__快速開始_企業級分布式應用服務 EDAS-阿裏雲
添加和驗證壓測目標__環境管理_Lite用戶使用手冊_性能測試-阿裏雲
查看診斷報告__實例診斷_性能管理_用戶指南(RDBMS)_數據管理-阿裏雲
Taskitem數據類型__數據類型_API 手冊_CDN-阿裏雲
獲取 Region 列表__資源管理類 API_Open API 參考_企業級分布式應用服務 EDAS-阿裏雲
RemoveListenerWhiteListItem__Listener相關API_API 參考_負載均衡-阿裏雲
更新媒體工作流__媒體工作流接口_API使用手冊_視頻點播-阿裏雲
分配公網 IP 地址__網絡相關接口_API 參考_雲服務器 ECS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲