MYSQL: gespeicherte Prozedur, eine Zeile einfügen und dann wählen Sie es per LAST_INSERT_ID()
Ich versuche eine gespeicherte Prozedur aufrufen, AddCluster
die Hexe ist unter dem parameter 'Titel' und 'alt'
Fall 1:
Wenn 'Titel' ist in der db dann einfach nur wieder die "alte" Reihe!!!
Fall 2:
Falls der 'Titel' ist NICHT in der db dann
einfügen einer Zeile-Basis auf parmerer 'Titel' und 'alt'
und wählen Sie dann die neu hinzugefügten Zeile über LAST_INSERT_ID()
Das problem ist auf Fall 2 es gibt nur leer!!!!
-- --------------------------------------------------------------------------------
-- 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$$
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen ohne Angabe eines id :
Stellen Sie sicher
Cluster.id
ist einAUTO_INCREMENT
Spalte, nur so erhalten Sie den Wert mitLAST_INSERT_ID()
.Nur ein kleines update.
Ich finde den Fehler.. Das ist
count(*)
Es sollte wie folgt sein:
Sieht das Loch update gespeicherte Prozedur hier!