DELIMITER //
CREATE PROCEDURE benutzer_loschen (uid INTEGER)
BEGIN
DECLARE keine_ausl BOOLEAN;
DECLARE CUSTOM_EXCEPTION CONDITION FOR SQLSTATE '45000';

SELECT MIN(ruckgabe) FROM ausleihe WHERE nutzer_id = uid INTO keine_ausl;

IF NOT keine_ausl
THEN
  SIGNAL CUSTOM_EXCEPTION
  SET MESSAGE_TEXT = 'Es wurden noch nicht alle Bücher zurückgegeben';
END IF;

INSERT INTO alte_ausleihen
  SELECT vorname,nachname,signatur
    FROM ausleihe JOIN exemplar ON ausleihe.exemplar_id = exemplar.id
    JOIN nutzer ON ausleihe.nutzer_id = nutzer.id
    WHERE nutzer_id = uid;
DELETE FROM ausleihe WHERE nutzer_id = uid;
DELETE FROM nutzer WHERE id = uid;
END; //
DELIMITER ;

