Project

General

Profile

QFQ Merge » auto_insert_merge_rules.sql

Enis Nuredini, 24.06.2024 14:08

 
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 ;
(2-2/12)