2017-11-07 5 views
0

は、どのように私はロールバックした場合なステートメントを作成しない場合:もしstudentbrukernavn(学生はユーザ名)がすでに存在し、klassekode(classcodeが)私はそれを必要とするMySQLの手順、声明

DELIMITER $$ 
DROP PROCEDURE IF EXISTS OPPRETT_STUDENT$$ 
CREATE PROCEDURE OPPRETT_STUDENT 
(
    IN bilde_bildenr INT, 
    IN bilde_filnavn VARCHAR(30), 
    IN bilde_beskrivelse VARCHAR(30), 
    IN student_brukernavn VARCHAR(30), 
    IN student_fornavn VARCHAR(30), 
    IN student_etternavn VARCHAR(30), 
    IN student_klassekode VARCHAR(30) 
) 
BEGIN 
START TRANSACTION; 
    INSERT INTO bilde 
    VALUES (bilde_bildenr, 
      CONCAT('bilder/',student_brukernavn,'.jpg'), 
      CONCAT('bilde av ',student_fornavn,' ',student_etternavn) 
      ); 
    INSERT INTO student VALUES (student_brukernavn, student_fornavn, student_etternavn, student_klassekode, bilde_bildenr); 
COMMIT; 
END$$ 
DELIMITER ; 

答えて

0
IF NOT EXISTS(SELECT query) THEN 
ELSE 
END IF; 

Hope this helps 
+0

存在しない場合ロールバックを実行する –

+1

このコードスニペットをご利用いただきありがとうございます。適切な説明(* meta.stackexchange.com/q/114762)は、*なぜ*これが問題の良い解決策であるかを示すことで長期的な価値を向上させ、将来の読者にとって他の同様の質問。あなたの前提を含め、あなたの答えを[編集]して説明を加えてください。 –