1

我正在尝试调用 AddCluster 女巫的存储过程调用参数“title”和“alt”

情况1:

如果“标题”在数据库中,则只需返回“旧”行!

案例二:

如果“标题”不在数据库中,那么,

根据 parmerer 'title' 和 'alt' 插入一行

然后通过 LAST_INSERT_ID() 选择新添加的行

问题出在案例 2 上,它只返回空!!

-- --------------------------------------------------------------------------------
-- AddCluster Group Routines
-- --------------------------------------------------------------------------------
DELIMITER $$

CREATE DEFINER=`linkbay_dk`@`%` PROCEDURE `AddCluster`(in in_title varchar(45), in in_alt text)
BEGIN
    /* check if 'in_title' is in db */
    IF EXISTS
    (
        SELECT count(*) FROM Cluster 
        WHERE title=in_title 
    )
    THEN
        /* returns old Cluster there is in db */
        SELECT * FROM Cluster WHERE title=in_title; 
    ELSE
        INSERT INTO Cluster
        (
            `id`,
            `create_at`,
            `title`,
            `alt`
        )
        VALUES
        (
            null,
            NOW(),
            in_title,
            in_alt
        );
        /* returns the newly added Cluster */
        SELECT * FROM Cluster WHERE id=LAST_INSERT_ID();
    END IF;
END$$
4

2 回答 2

0

尝试在不指定 id 的情况下插入:

...
ELSE
    INSERT INTO Cluster
    (
        `create_at`,
        `title`,
        `alt`
    )
    VALUES
    (
        NOW(),
        in_title,
        in_alt
    );
    /* returns the newly added Cluster */
    ...

确保Cluster.id是一AUTO_INCREMENT列,只有这样您才能使用LAST_INSERT_ID().

于 2012-05-20T19:04:29.290 回答
0

只是一点点更新。我发现错误..这是count(*)

SELECT count(*) FROM Cluster WHERE title=in_title 

它应该是这样的:

SELECT * FROM Cluster WHERE title=in_title

请参阅此处的孔更新存储过程

于 2012-05-23T05:34:05.777 回答