sql >> Database >  >> RDS >> Mysql

Hoe een SQL Update-instructie testen voordat deze wordt uitgevoerd?

Hoe zit het met transacties? Ze hebben de ROLLBACK-functie.

@see https://dev.mysql.com/doc/refman /5.0/nl/commit.html

Bijvoorbeeld:

START TRANSACTION;
SELECT * FROM nicetable WHERE somthing=1;
UPDATE nicetable SET nicefield='VALUE' WHERE somthing=1;
SELECT * FROM nicetable WHERE somthing=1; #check

COMMIT;
# or if you want to reset changes 
ROLLBACK;

SELECT * FROM nicetable WHERE somthing=1; #should be the old value

Antwoord op vraag van @rickozoe hieronder:

Over het algemeen worden deze regels niet als één keer uitgevoerd. In PHP bijv. je zou zoiets schrijven (misschien een beetje schoner, maar wilde snel antwoorden;-) ):

$MysqlConnection->query('START TRANSACTION;');
$erg = $MysqlConnection->query('UPDATE MyGuests SET lastname='Doe' WHERE id=2;');
if($erg)
    $MysqlConnection->query('COMMIT;');
else
    $MysqlConnection->query('ROLLBACK;');

Een andere manier is om MySQL-variabelen te gebruiken (zie https:/ /dev.mysql.com/doc/refman/5.7/en/user-variables.htm landhttps://stackoverflow.com/a/18499823/1416909 ):

# do some stuff that should be conditionally rollbacked later on

SET @v1 := UPDATE MyGuests SET lastname='Doe' WHERE id=2;
IF(v1 < 1) THEN
    ROLLBACK;
ELSE
    COMMIT;
END IF;

Maar ik zou willen voorstellen om de taalwrappers te gebruiken die beschikbaar zijn in je favoriete programmeertaal.



  1. Converteer de nieuwe rij naar XML binnen een Oracle Trigger

  2. Hulp nodig bij berekening met behulp van twee datasets met Expression SSRS

  3. mySQL - Tafelvergrendeling versus rijvergrendeling

  4. Android-apps verbinden met mysql-database