· 9 years ago · Dec 01, 2016, 10:32 AM
1INSERT INTO player_js(player_js.content)VALUES('{"nam":"hehe","lv":1,"car":2,"mny":7}')
2
3-- -------------------------------------------------------------------------
4USE GameDB;
5DROP TABLE if EXISTS player_js;
6-- create table
7CREATE TABLE `player_js` (
8`id` int(11) NOT NULL AUTO_INCREMENT,
9`content` json DEFAULT NULL,
10`name` varchar(100) COLLATE utf8mb4_bin GENERATED ALWAYS AS (json_extract(content,'$.nam')) VIRTUAL,
11`level` int(11) GENERATED ALWAYS AS (json_extract(content,'$.lv')) VIRTUAL,
12`career` int(11) GENERATED ALWAYS AS (json_extract(content,'$.car')) VIRTUAL,
13`money` int(11) GENERATED ALWAYS AS (json_extract(content,'$.mny')) VIRTUAL,
14PRIMARY KEY (`id`),
15KEY `idx_level` (`level`),
16KEY `idx_money` (`money`)
17) ENGINE=InnoDB AUTO_INCREMENT=5005 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
18
19DROP PROCEDURE IF EXISTS SavePlayer_js;
20delimiter $$
21-- create procedure
22CREATE PROCEDURE `SavePlayer_js`(IN content JSON)
23BEGIN
24INSERT INTO player_js(player_js.content)VALUES(content);
25END$$
26delimiter;
27
28CALL SavePlayer_js('{"nam":"hehe","lv":1,"car":2,"mny":7}'); -- get error(3102):Expression of generated column 'name' contains a disallowed function