Inhaltsverzeichnis
不能回滚的语句(Statements you can’t ROLLBACK)
提示: 临时表(TEMPORARY)
保存点(Savepoint)
Heim Datenbank MySQL-Tutorial MySQL的事务陷阱和艺术_MySQL

MySQL的事务陷阱和艺术_MySQL

Jun 01, 2016 pm 12:59 PM
事务 艺术 陷阱

作者在之前的文章 “MySQL事务及为何不能在PHP模仿事务” 里面, 详细说明了事务的优点,并介绍了一些简单的SQL命令,使得应用程序更加健壮。但在web程序员的生命旅程中并没有多少事情是看起来那样简单的。。。。。

不能回滚的语句(Statements you can’t ROLLBACK)

很遗憾滴通知你, 并不是所有的数据库操作都支持回滚( ROLLBACK ) 。如果你更改数据库/表结构(schema), 所有当前事务都会被提交, 而升级(alteration )将会在其独有的事务中运行(不属于任何客户端事务)。这些语句包括:

CREATE DATABASE ALTER DATABASE DROP DATABASE CREATE TABLE ALTER TABLE DROP TABLE RENAME TABLE TRUNCATE TABLE CREATE INDEX DROP INDEX CREATE EVENT DROP EVENT CREATE FUNCTION DROP FUNCTION CREATE PROCEDURE DROP PROCEDURE

我们不能撤消数据库根本上的变化, 例如:

START TRANSACTION; 

DROP TABLE MyImportantData;
-- 所有事务会被强制提交, existing (empty) transaction is COMMIT-ed
-- 然后该表就被永久地删除了(table is dropped permanently)

ROLLBACK;
-- 没机会了,数据已经不要你了. no chance, mate - your data's gone
Nach dem Login kopieren

提示: 临时表(TEMPORARY)

创建、升级和删除(CREATE, ALTER, and DROP)临时表并不会引起隐式提交(implicit COMMIT. )。当然,这些操作也是不能回滚的。

保存点(Savepoint)

我们对异常那是爱之深责之切,那么让我们来看看另一个设计优美的部分。保存点(Savepoint)是事务中有效的命名位置。你可以回滚到某个保存点而不影响改点之前的SQL更新。。。有点像Photoshop中的历史面板。

最简单的方法,我们一起来看个示例:

START TRANSACTION;

-- 增加 tableA 的记录
INSERT INTO tableA VALUES (1,2,3);

-- 创建保存点 tableAupdated
SAVEPOINT tableAupdated;

-- 增加 tableB 的记录
INSERT INTO tableB VALUES (4,5,6);

-- 反正发生了些什么不愉快的事,要取消对 tableB 所做的更新...
ROLLBACK TO tableAupdated;

-- 这时候提交,就只有 tableA 被更新了
COMMIT;
Nach dem Login kopieren

当然, 也可以设置多个保存点标识符(SAVEPOINT identifiers), 并且在事务中回滚到任意一处。

也可以删除一个保存点,语法如下:

RELEASE SAVEPOINT savepointName;
Nach dem Login kopieren

只要事务提交或者(整个)回滚,那么所有的保存点都会被删除。

事务和保存点的使用非常简单,能有效保护 InnoDB 中重要的数据。你还有什么理由坚持使用 MyISAM 呢,现在MyISAM的效率也不如InnoDB了。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So fügen Sie künstlerische Seitenränder in Microsoft Word hinzu So fügen Sie künstlerische Seitenränder in Microsoft Word hinzu Apr 27, 2023 pm 08:25 PM

Sind Sie es leid, ständig die traditionellen schwarzen Ränder in Ihren Word-Dokumenten zu sehen? Suchen Sie nach Möglichkeiten, Ihren Dokumenten farbenfrohe und künstlerische Ränder hinzuzufügen, um sie attraktiver und unterhaltsamer zu gestalten? Wie wäre es, wenn Sie verschiedenen Seiten Ihres Word-Dokuments unterschiedliche künstlerische Ränder hinzufügen würden? Oder einen einzigen künstlerischen Rahmen auf alle Seiten im Dokument gleichzeitig anwenden? Ich weiß, dass Sie von dieser ganzen Sache mit den künstlerischen Grenzen genauso begeistert sind wie wir! Lesen Sie direkt diesen Artikel, um zu erfahren, wie Sie erfolgreich künstlerische Ränder auf Word-Dokumente anwenden. Teil 1: So wenden Sie den gleichen künstlerischen Seitenrand auf alle Seiten in einem Word-Dokument an. Schritt 1: Öffnen Sie das Word-Dokument und klicken Sie im oberen Menüband auf die Registerkarte „Design“. Wählen Sie im DESIGN

Zum 70. Jahrestag der Thronbesteigung der Königin präsentierte der weltweit erste hyperrealistische humanoide Roboterkünstler ein Porträt, das wegen „Mangel an Glauben' scharf kritisiert wurde. Zum 70. Jahrestag der Thronbesteigung der Königin präsentierte der weltweit erste hyperrealistische humanoide Roboterkünstler ein Porträt, das wegen „Mangel an Glauben' scharf kritisiert wurde. Apr 08, 2023 pm 08:11 PM

Produziert von Big Data Digest Autor: Caleb Um den 70. Jahrestag der Thronbesteigung von Königin Elizabeth II. zu feiern, war auch das Vereinigte Königreich schon früh voller Feierlichkeiten. Es wird davon ausgegangen, dass das Vereinigte Königreich vom 2. bis 5. Juni an vier aufeinanderfolgenden Tagen einen Feiertag hat und in diesem Zeitraum eine Reihe von Feierlichkeiten abhält. Die britische Royal Mint stellt mit einem Durchmesser von 220 mm, einem Gewicht von 15 Kilogramm und einem Nennwert von 15.000 Pfund auch die größte Münze der Geschichte her. Die Herstellung dauerte fast 400 Stunden und ist die größte von der Royal Mint hergestellte Münze Fabrik in 1.100 Jahren. Auf einer Seite dieser Goldmünze ist das Symbol EIIR eingraviert, das Königin Elizabeth II. repräsentiert, umgeben von Rosen, Narzissen, Disteln und Kleeblättern, die das Vereinigte Königreich repräsentieren. Die andere Seite zeigt die Königin zu Pferd. An einem so lebhaften Tag muss natürlich die KI kommen und mitmachen

Sperrwartezeitüberschreitung überschritten; versuchen Sie, die Transaktion neu zu starten – So beheben Sie den MySQL-Fehler: Transaktionswartezeitüberschreitung Sperrwartezeitüberschreitung überschritten; versuchen Sie, die Transaktion neu zu starten – So beheben Sie den MySQL-Fehler: Transaktionswartezeitüberschreitung Oct 05, 2023 am 08:46 AM

Lockwaittimeoutexceeded;tryrestartingtransaction – So beheben Sie den MySQL-Fehler: Transaktionswartezeitüberschreitung Bei Verwendung der MySQL-Datenbank kann es manchmal zu einem häufigen Fehler kommen: Lockwaittimeoutexceeded;tryrestartingtransaction. Dieser Fehler weist auf eine Transaktionswartezeitüberschreitung hin. Dieser Fehler tritt normalerweise auf, wenn

MySQL-Transaktionsverarbeitung: Der Unterschied zwischen automatischer Übermittlung und manueller Übermittlung MySQL-Transaktionsverarbeitung: Der Unterschied zwischen automatischer Übermittlung und manueller Übermittlung Mar 16, 2024 am 11:33 AM

MySQL-Transaktionsverarbeitung: Der Unterschied zwischen automatischer Übermittlung und manueller Übermittlung. In der MySQL-Datenbank ist eine Transaktion eine Reihe von SQL-Anweisungen. Entweder sind alle Ausführungen erfolgreich oder alle Ausführungen schlagen fehl, wodurch die Konsistenz und Integrität der Daten sichergestellt wird. In MySQL können Transaktionen in automatische Übermittlung und manuelle Übermittlung unterteilt werden. Der Unterschied liegt im Zeitpunkt der Transaktionsübermittlung und im Umfang der Kontrolle über die Transaktion. Im Folgenden wird der Unterschied zwischen automatischer Übermittlung und manueller Übermittlung ausführlich vorgestellt und spezifische Codebeispiele zur Veranschaulichung gegeben. 1. Automatisch in MySQL übermitteln, wenn es nicht angezeigt wird

Die Prinzipien und Anwendungsszenarien von MySQL-Transaktionen Die Prinzipien und Anwendungsszenarien von MySQL-Transaktionen Mar 02, 2024 am 09:51 AM

Das Prinzip und die Anwendungsszenarien von MySQL-Transaktionen Im Datenbanksystem ist eine Transaktion eine Reihe von SQL-Operationen, die entweder alle erfolgreich ausgeführt werden oder alle fehlschlagen und zurückgesetzt werden. Als häufig verwendetes relationales Datenbankverwaltungssystem unterstützt MySQL Transaktionsmerkmale und kann sicherstellen, dass die Daten in der Datenbank hinsichtlich Konsistenz, Isolation, Haltbarkeit und Atomizität garantiert sind. Dieser Artikel beginnt mit den Grundprinzipien von MySQL-Transaktionen, stellt deren Anwendungsszenarien vor und stellt spezifische Codebeispiele als Referenz für die Leser bereit. Das Prinzip der MySQL-Transaktionen: My

PHP PDO-Tutorial: Ein Leitfaden für Fortgeschrittene von den Grundlagen bis zur Beherrschung PHP PDO-Tutorial: Ein Leitfaden für Fortgeschrittene von den Grundlagen bis zur Beherrschung Feb 19, 2024 pm 06:30 PM

1. Einführung in PDO PDO ist eine Erweiterungsbibliothek von PHP, die eine objektorientierte Möglichkeit zum Betrieb der Datenbank bietet. PDO unterstützt eine Vielzahl von Datenbanken, einschließlich MySQL, Postgresql, Oracle, SQLServer usw. PDO ermöglicht Entwicklern die Verwendung einer einheitlichen API zum Betrieb verschiedener Datenbanken, wodurch Entwickler problemlos zwischen verschiedenen Datenbanken wechseln können. 2. PDO stellt eine Verbindung zur Datenbank her. Um PDO zum Herstellen einer Verbindung zur Datenbank zu verwenden, müssen Sie zunächst ein PDO-Objekt erstellen. Der Konstruktor des PDO-Objekts erhält drei Parameter: Datenbanktyp, Hostname, Datenbankbenutzername und Passwort. Der folgende Code erstellt beispielsweise ein Objekt, das eine Verbindung zu einer MySQL-Datenbank herstellt: $dsn="mysq

Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Apr 16, 2024 am 11:42 AM

Transaktionen gewährleisten die Integrität der Datenbankdaten, einschließlich Atomizität, Konsistenz, Isolation und Haltbarkeit. JDBC verwendet die Verbindungsschnittstelle, um die Transaktionssteuerung bereitzustellen (setAutoCommit, Commit, Rollback). Parallelitätskontrollmechanismen koordinieren gleichzeitige Vorgänge mithilfe von Sperren oder optimistischer/pessimistischer Parallelitätskontrolle, um eine Transaktionsisolation zu erreichen und Dateninkonsistenzen zu verhindern.

Beherrschen Sie die Leistungsfähigkeit von PHP PDO: erweiterte Abfragen und Aktualisierungen Beherrschen Sie die Leistungsfähigkeit von PHP PDO: erweiterte Abfragen und Aktualisierungen Feb 20, 2024 am 08:24 AM

Die PHP Data Objects (PDO)-Erweiterung ermöglicht eine effiziente und objektorientierte Interaktion mit Datenbankservern. Seine erweiterten Abfrage- und Aktualisierungsfunktionen ermöglichen es Entwicklern, komplexe Datenbankoperationen durchzuführen und so die Leistung und Wartbarkeit des Codes zu verbessern. Dieser Artikel befasst sich mit den erweiterten Abfrage- und Aktualisierungsfunktionen von PDO und führt Sie durch die Beherrschung seiner leistungsstarken Funktionen. Erweiterte Abfragen: Platzhalter und gebundene Parameter verwenden Platzhalter und gebundene Parameter sind wichtige Werkzeuge zur Verbesserung der Abfrageleistung und -sicherheit. Platzhalter verwenden Fragezeichen (?), um ersetzbare Parameter in der Abfrage darzustellen, während Bind-Parameter es Ihnen ermöglichen, den Datentyp und den Wert jedes Parameters anzugeben. Durch die Verwendung dieser Methoden können Sie SQL-Injection-Angriffe vermeiden und die Leistung verbessern, da die Datenbank-Engine Abfragen im Voraus optimieren kann. //Platzhalter $stmt=$ verwenden

See all articles