Oracle兼容-语法-INSERT ALL
1. 语法
1. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY]
2. { ALL insert_into_clause ... | conditional_insert_clause }
3. {SELECT ... }
5. insert_into_clause:
6. INTO tbl_name
7. [PARTITION (partition_name [, partition_name] ...)]
8. [(col_name [, col_name] ...)]
9. [{ VALUES | VALUE} (value_list)]
11. conditional_insert_clause:
12. { ALL | FIRST } when_insert_clause ... [ else_insert_clause ]
14. when_insert_clause:
15. WHEN condition THEN insert_into_clause ...
17. else_insert_clause:
18. ELSE insert_into_clause ...
20. value:
21. {expr | DEFAULT}
23. value_list:
24. value [, value] ...
27. EXPLAIN insert_all_stmt
2. 定义和用法
在多表插入中,INSERT ALL INTO支持从子查询计算返回的行派生的计算行插入到一个或多个表中。
- 支持插入不同表。
- 支持条件查询插入。
INSERT ALL INTO使用限制:
- 插入的目标只能是表,不能是视图,不能是集合表达式
- 插入结束后,函数
LAST_INSERT_ID()返回值为0,避免多表插入歧义。 - 运行
EXPLAIN FORMAT=JSON查看执行计划的输出结果只会展示插入第一张表。
3. 示例
1. greatsql> CREATE TABLE t3(id INT PRIMARY KEY, cc VARCHAR(10));
2. greatsql> CREATE TABLE t2 LIKE t3;
3. greatsql> CREATE TABLE t1 LIKE t3;
4. greatsql> INSERT INTO t3 VALUES(1, 'test1'),(2,'test2'), (3,'test3');
6. greatsql> INSERT ALL
7. INTO t1
8. INTO t2
9. SELECT * FROM t3;
10. Query OK, 6 rows affected (0.45 sec)
11. Records: 6 Duplicates: 0 Warnings: 0
13. greatsql> INSERT ALL
14. INTO t1(id) VALUES (id+20)
15. INTO t2(cc,id) VALUES ('test',id+10)
16. SELECT id FROM t3;
17. Query OK, 6 rows affected (0.05 sec)
18. Records: 6 Duplicates: 0 Warnings: 0
20. greatsql> INSERT ALL
21. INTO t1 (id,cc) VALUES(13,'test13')
22. INTO t1 (id,cc) VALUES(12,'test12')
23. SELECT 1 FROM DUAL;
24. Query OK, 2 rows affected (0.06 sec)
25. Records: 2 Duplicates: 0 Warnings: 0
27. greatsql> SELECT * FROM t2;
28. +----+-------+
29. | id | cc |
30. +----+-------+
31. | 1 | test1 |
32. | 2 | test2 |
33. | 3 | test3 |
34. | 11 | test |
35. | 12 | test |
36. | 13 | test |
37. +----+-------+
39. greatsql> SELECT * FROM t1;
40. +----+--------+
41. | id | cc |
42. +----+--------+
43. | 1 | test1 |
44. | 2 | test2 |
45. | 3 | test3 |
46. | 12 | test12 |
47. | 13 | test13 |
48. | 21 | NULL |
49. | 22 | NULL |
50. | 23 | NULL |
51. +----+--------+
问题反馈
联系我们
扫码关注微信公众号

