QFQ Merge » auto_insert_merge_rules.sql
1 |
DELIMITER $$ |
---|---|
2 |
CREATE DEFINER=`medtool_dev`@`localhost` PROCEDURE `auto_insert_merge_rules`(IN `tableSchema` VARCHAR(255)) |
3 |
BEGIN
|
4 |
DECLARE done INT DEFAULT FALSE; |
5 |
DECLARE _tableName VARCHAR(255); |
6 |
DECLARE grMergeRuleId INT; |
7 |
DECLARE cur CURSOR FOR |
8 |
SELECT TABLE_NAME |
9 |
FROM information_schema.TABLES |
10 |
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = tableSchema; |
11 |
|
12 |
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; |
13 |
|
14 |
SELECT id INTO grMergeRuleId FROM Grp WHERE reference = 'qfq_merge_rule' LIMIT 1; |
15 |
OPEN cur; |
16 |
|
17 |
read_loop: LOOP |
18 |
FETCH cur INTO _tableName; |
19 |
IF done THEN |
20 |
LEAVE read_loop; |
21 |
END IF; |
22 |
|
23 |
SET @columnNames = ( |
24 |
SELECT GROUP_CONCAT(COLUMN_NAME) |
25 |
FROM information_schema.COLUMNS |
26 |
WHERE TABLE_NAME = _tableName AND COLUMN_NAME LIKE 'pId%' AND TABLE_SCHEMA = tableSchema |
27 |
);
|
28 |
|
29 |
IF @columnNames IS NOT NULL THEN |
30 |
IF NOT EXISTS (SELECT 1 FROM Grp AS grMergeRules, Grp AS grType WHERE grMergeRules.name = _tableName AND grMergeRules.grId = grMergeRuleId) THEN |
31 |
INSERT INTO Grp (name, grId, value3, comment, value2, enabled) |
32 |
VALUES (_tableName, grMergeRuleId, @columnNames, 'Auto generated', '*', 'yes'); |
33 |
END IF; |
34 |
END IF; |
35 |
|
36 |
END LOOP; |
37 |
CLOSE cur; |
38 |
END$$ |
39 |
DELIMITER ; |