Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да тествате SQL изявление за актуализиране, преди да го стартирате?

Какво ще кажете за транзакциите? Те имат функцията ROLLBACK.

@вижте https://dev.mysql.com/doc/refman /5.0/bg/commit.html

Например:

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

Отговор на въпрос от @rickozoe по-долу:

По принцип тези редове няма да се изпълняват веднъж. В PHP f.e. бихте написали нещо подобно (може би малко по-чисто, но исках да отговоря бързо;-) ):

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

Друг начин би бил да използвате MySQL променливи (вижте 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;

Но бих предложил да използвате езиковите обвивки, налични във вашия любим език за програмиране.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е солта, когато се отнася до MYSQL sha1?

  2. Присъединете две MySQL таблици с PHP

  3. MySQL, Проверете дали съществува колона в таблица с SQL

  4. MySQL:LIMIT с процент от количеството записи?

  5. Коя версия е моят MySQL сървър?