儲存過程製造資料
阿新 • • 發佈:2018-12-15
由於之前在寫好專案後,由於專案中需要進行sql效能測試,但實際由於資料庫中的實際資料量相對比較少,測試效果不佳,所以想著直接採用儲存過程,直接生成資料,這樣也快速高效。
編寫mysql儲存過程,以下以實際專案為例
78 -- 建立儲存過程
79 CREATE DEFINER=`root`@`localhost` PROCEDURE `add_storage_memory`( IN n INT )
80 BEGIN
81 -- 定義引數
82 DECLARE
83 i INT DEFAULT 1;-- 定義
84 DECLARE commodity_id VARCHAR(40);
85 DECLARE receipt_id VARCHAR(40);
86 DECLARE rec_code VARCHAR(20);<br> set autocommit=0;--設定不自動提交
87 -- while 迴圈來一下,生成百萬資料就靠它
88 WHILE
89 i < n DO
90 -- 獲取 uuid
91 -- 迴圈體裡面進行一系列的業務操作即可,比如A表插入資料,b表插入資料
92 set commodity_id = UUID( );
93
94 SET receipt_id = UUID( );
95
96 SET rec_code = CONCAT( "00000", i ) ;-- 插入商品
97 INSERT INTO `res_provider_product` ( `id`, `provider_id`, `name`, `specification`, `unit`, `price`, `category_id`, `category`, `creation`, `create_time`, `updater`, `update_time`, `status` )
98 VALUES
99 ( commodity_id, '98989b55-09f7-4871-b5c9-085590e786b2', '竹牙籤', '', NULL, NULL, '905f87e7-21bc-47e1-9e61-a85645524cb2', '其他', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-05-18 19:52:04', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-05-18 19:52:04', 1 );-- 插入定價
100 INSERT INTO `res_product_price` ( `id`, `product_id`, `price`, `start_time`, `end_time`, `creation`, `create_time`, `updater`, `update_time`, `status` )
101 VALUES
102 ( UUID( ), commodity_id, 2.00, '2018-06-09', NULL, 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:27:43', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:27:43', 50 );-- 插入入庫單
103 INSERT INTO `bis_receipt` ( `id`, `code`, `storage_id`, `provider_Name`, `provider_id`, `total_amount`, `business_time`, `creation`, `create_time`, `updater`, `update_time`, `status` )
104 VALUES
105 ( receipt_id, rec_code, '4512ef23-b20b-40f0-9ca1-b3316c4cc6c6', '庫存供應商', '98989b55-09f7-4871-b5c9-085590e786b2', 4.00, '2018-06-09 00:00:00', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 50 );-- 插入入庫單子表
106 INSERT INTO `bis_receipt_b` (
107 `id`,
108 `receipt_id`,
109 `code`,
110 `product_id`,
111 `product_name`,
112 `specification`,
113 `unit`,
114 `quantity`,
115 `price`,
116 `total_price`,
117 `category_id`,
118 `category`,
119 `rec_dept`,
120 `comment`,
121 `creation`,
122 `create_time`,
123 `updater`,
124 `update_time`,
125 `status`
126 )
127 VALUES
128 (
129 UUID( ),
130 receipt_id,
131 rec_code,
132 commodity_id,
133 '竹牙籤',
134 '',
135 NULL,
136 2.00,
137 2.00,
138 4.00,
139 '905f87e7-21bc-47e1-9e61-a85645524cb2',
140 '其他',
141 NULL,
142 '',
143 'cd9335a9-06e6-4a39-84ec-2dee58378b4c',
144 '2018-06-09 16:30:27',
145 'cd9335a9-06e6-4a39-84ec-2dee58378b4c',
146 '2018-06-09 16:30:27',
147 1
148 );
149 //最後面新增++操作
150 SET i = i + 1;
151
152 END WHILE;
153 commit;--提交事務
154 END