SP Update problem
Jeg har lavet denne SP, men den virker ikke efter hensigten.Den skal indsætte værdier, men kun hvis de er unikke (ikke er i tabellen allerede) - ellers skal værdierne opdateres.
Det er egentlig en simpel update, der giver problemet:
UPDATE
`testplatformstatus`
SET
`status` = status
WHERE
`round` = round AND
`id` = id;
Den opdaterer alle rækker i tabellen - ikke kun dem, der overholder WHERE kriteriet.
Hvis jeg hardcoder værdier for round og id ind, bliver kun de rækker opdateret.
Følgende sekvens beskriver min problemstilling:
CALL UpdateTpStatus('test1',1,1); --Virker (Der bliver oprettet en row)
CALL UpdateTpStatus('test2',1,2); --Virker (Der bliver oprettet en row)
CALL UpdateTpStatus('test3',1,3); --Virker (Der bliver oprettet en row)
CALL UpdateTpStatus('test4',1,3); --Virker ikke - alle rækkers status bliver sat til 'test4'
DROP PROCEDURE IF EXISTS `UpdateTpStatus`\\
CREATE PROCEDURE `UpdateTpStatus` (
IN status VARCHAR(255),
IN round INT,
IN id INT
)
BEGIN
IF EXISTS(
SELECT
*
FROM
`testplatformstatus`
WHERE
`testplatformstatus`.`round` = round AND
`testplatformstatus`.`id` = id
) THEN
UPDATE
`testplatformstatus`
SET
`status` = status
WHERE
`round` = round AND
`id` = id;
ELSE
INSERT INTO
`testplatformstatus`
(
`status`,
`round`,
`id`
)
VALUES
(
status,
round,
id
);
END IF;
END\\