sql >> Database >  >> RDS >> Mysql

Indien voorwaardelijk in SQL Script voor Mysql

Ik wikkel mijn SQL-script gewoon in een procedure, waar voorwaardelijke code is toegestaan. Als u de verklaringen liever niet laat rondslingeren, kunt u de procedure laten vallen als u klaar bent. Hier is een voorbeeld:

delimiter //

create procedure insert_games() 

begin

    set @platform_id := (select id from platform where name = 'Nintendo DS');

    -- Only insert rows if the platform was found
    if @platform_id is not null then 

        insert into game(name, platform_id) values('New Super Mario Bros', @platform_id);
        insert into game(name, platform_id) values('Mario Kart DS', @platform_id);

    end if;

end;

//

delimiter ;

-- Execute the procedure
call insert_games();

-- Drop the procedure
drop procedure insert_games;

Als u geen procedures hebt gebruikt, heeft het trefwoord "delimiter" misschien wat uitleg nodig. De eerste regel zet het scheidingsteken om naar "//", zodat we puntkomma's in onze proceduredefinitie kunnen opnemen zonder dat MySQL ze nog probeert te interpreteren. Zodra de procedure is gemaakt, schakelen we het scheidingsteken terug naar ";" zodat we instructies zoals gewoonlijk kunnen uitvoeren.



  1. De schoonste manier om een ​​SQL-string in Java te bouwen

  2. Hoe verlaat ik een script in SQLPlus wanneer er een fout optreedt en keer ik terug naar de SQLPlus-prompt, zonder SQLPlus te verbreken of af te sluiten?

  3. Beperking Schending bij volharden Een-op-veel-relatie

  4. Bouw snel een PHP CRUD-interface met de PDO Advanced CRUD Generator Tool