将mysql存储过程的结果导入节点js

时间:2017-05-24 22:10:14

标签: mysql sql node.js stored-procedures node-mysql

我正在尝试将记录插入到具有唯一键的表中,并返回插入记录的ID。如果该唯一键已存在,我想返回现有记录的ID。

我有以下存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_module_get_id`(IN code_prefix  CHAR(4), IN code_num INT, IN module_name VARCHAR(100), IN url VARCHAR(100))
BEGIN
    SET @auto_id = NULL;
    SELECT `Module Table ID` INTO @auto_id
    FROM `module`
    WHERE `Code Prefix` = code_prefix AND `Code Num` = code_num;
    -- Optionally one insert
    IF @auto_id IS NULL AND code_prefix IS NOT NULL AND code_num IS NOT NULL THEN
        INSERT INTO `module` (`Code Prefix`,`Code Num`, `Name`, `url`)
        VALUES (code_prefix, code_num, module_name, url);
        SET @auto_id = LAST_INSERT_ID();
    END IF;
    SELECT @auto_id AS res;
END

由以下内容调用:

     DB_connector.query('CALL insert_module_get_id(?,?,?,?)',
                        [code_prefix, code_number, name, url],
                        callback);

问题是回调永远不会被调用。如果使用唯一数据调用它,那么数据将按预期插入数据库,但不会调用回调。

为了增加这个谜团,前面的过程执行回调罚款。 工作程序是

CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_code_prefix`(IN 
codePrefixIns CHAR(4))
BEGIN
    SET @codePrefix = NULL;
    SELECT `Code Prefix` INTO @codePrefix
    FROM `module base`
    WHERE `Code Prefix` = codePrefixIns;
    -- Optionally one insert
    IF @codePrefix IS NULL AND codePrefixIns IS NOT NULL THEN
        INSERT INTO `module base` (`Code Prefix`)
        VALUES (codePrefixIns);
    END IF;
END

为什么这会正确调用回调。

对于数据库原理图,请参阅:Github Source这个问题不是最新的,但原理图是

0 个答案:

没有答案