Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przetestować instrukcję SQL Update przed jej uruchomieniem?

A co z transakcjami? Mają funkcję ROLLBACK.

@zobacz https://dev.mysql.com/doc/refman /5.0/pl/commit.html

Na przykład:

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

Odpowiedź na pytanie od @rickozoe poniżej:

Generalnie linie te nie będą wykonywane raz. W PHP np. napisałbyś coś takiego (może trochę czyściej, ale chciałem szybko odpowiedzieć;-) ):

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

Innym sposobem byłoby użycie zmiennych MySQL (patrz 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;

Ale sugerowałbym użycie opakowań językowych dostępnych w twoim ulubionym języku programowania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oblicz wartość percentyla za pomocą MySQL

  2. mysqldump całą strukturę, ale tylko dane z wybranych tabel w jednym poleceniu

  3. Nie można załadować wtyczki uwierzytelniania „caching_sha2_password”

  4. Zapytanie o konwersję z datetime na date mysql

  5. Wydajność MySQL:Konwersja MySQL do MariaDB