mysql - 如果表为空,则插入多条记录
问题描述
我有一个场景,如果表为空,我必须插入多条记录。每次我运行我的服务器时,我的 sql 脚本都会运行。我不使用 H2 数据库,所以我可以插入重复键。我使用 myBatis。我希望仅在表为空时插入查询。
我的插入查询如下:
LOCK TABLES `t002_seat_mst` WRITE;
INSERT INTO `t002_seat_mst` VALUES (2020,1,1,0,0,1,0,'228A'),(2021,1,2,0,0,1,0,'229A'),
(2022,1,3,0,0,1,0,'231A'),(2023,1,4,0,0,1,0,'233A'),(2024,1,5,0,0,1,0,'235A'),
(2025,1,6,0,0,1,0,'237A'),(2026,1,7,0,0,1,0,'239A'),(2027,1,8,0,0,1,0,'240A'),
(2028,1,9,0,0,1,0,'242A'),(2029,1,10,0,0,1,0,'244A'),(2030,1,11,0,0,1,0,'246A');
UNLOCK TABLES;
我怎样才能做到这一点?
解决方案
测试
LOCK TABLES `t002_seat_mst` AS t1 WRITE, `t002_seat_mst` AS t2 READ;
INSERT INTO t002_seat_mst AS t1
SELECT *
FROM ( SELECT 2020 a,1 b,1 c,0 d,0 e,1 f,0 g,'228A' h UNION ALL
SELECT 2021,1,2,0,0,1,0,'229A' UNION ALL
SELECT 2022,1,3,0,0,1,0,'231A' UNION ALL
SELECT 2023,1,4,0,0,1,0,'233A' UNION ALL
SELECT 2024,1,5,0,0,1,0,'235A' UNION ALL
SELECT 2025,1,6,0,0,1,0,'237A' UNION ALL
SELECT 2026,1,7,0,0,1,0,'239A' UNION ALL
SELECT 2027,1,8,0,0,1,0,'240A' UNION ALL
SELECT 2028,1,9,0,0,1,0,'242A' UNION ALL
SELECT 2029,1,10,0,0,1,0,'244A' UNION ALL
SELECT 2030,1,11,0,0,1,0,'246A' ) data
WHERE NOT EXISTS ( SELECT NULL
FROM t002_seat_mst AS t2 );
UNLOCK TABLES;
推荐阅读
- vb.net - 如何在 VB.NET 中恢复电子邮件地址 (Outlook) 的别名
- python - python web-scraping'连接断开'
- powershell - 在 Powershell 中启动后台进程
- c++ - 如何有效地找到数组中三元组和的最小差异?
- python - zmq.error.ZMQError:地址已在使用中,当使用 papermill 对多个笔记本运行多处理时
- flutter - 如何在 Flutter 中切换到暗/亮模式按钮?
- flutter - 如何等到功能在颤振中完成?
- database - 提供匿名性,同时为用户保留数据访问权限
- scala - DataSet Spark 的用例是什么?
- javascript - 具有 Arrays、Strange 的部分行为但不具有 ForEach、Filter、Map 等实用程序的字符串