1

AddCluster ウィッチがパラメータ 'title' と 'alt' を取得しているストアド プロシージャ コールを作成しようとしています。

ケース 1:

「タイトル」がデータベースにある場合は、「古い」行を返すだけです!

ケース 2:

「タイトル」がデータベースにない場合、

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

ほんの少しの更新。私はエラーを見つけます..これはcount(*)

SELECT count(*) FROM Cluster WHERE title=in_title 

次のようになります。

SELECT * FROM Cluster WHERE title=in_title

ここでホール更新ストアドプロシージャを参照してください

于 2012-05-23T05:34:05.777 に答える
0

id を指定せずに INSERT を試みます:

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

Cluster.idAUTO_INCREMENT列であることを確認してください。その方法でのみ、 で値を取得できますLAST_INSERT_ID()

于 2012-05-20T19:04:29.290 に答える