Transaktionssicherheit bei Ausführungsregeln?
Transaktionssicherheit bei Ausführungsregeln?
Angenommen wir haben einen Schritt mit 2 PHP-Ausführungsfunktionen, beide machen Inserts oder Updates.
1. Szenario JobRouterDB:
Wenn man via getJobDB Inserts und Updates macht und am Ende der zweiten Ausführungsregel JobRouterExcepted dann werden alle Änderungen der Regel(!), also beiden PHP-Funktionen, rollbacked. Dies halten wir für korrekt.
2. Szenario getDBConnection
Wenn man den gleichen Test macht mit getDBConnection zu einer anderen MSSQL-Datenbank dann rollt er keine einzige der Änderungen zurück. Nicht mal die aus der gleichen PHP-Funktion.
Siehe das Beispiel aus dem Feld "Sonstige Informationen". Werden diese beiden Inserts ausgeführt und danach direkt excepted dann wird bei getJobDB alles rollbacked, bei "externer" Datenbank nichts davon.
Ist das so korrekt?
Code:
```
$db = $this->getDBConnection('TestDB');
$sql = 'INSERT INTO TEST (field_one) VALUES (?)';
$this->jrSQLExecute($sql, ['xyz'], $db);
$sql = 'INSERT INTO TEST (field_two) VALUES (?)';
$this->jrSQLExecute($sql, ['abc'], $db);
throw new JobRouterException('Die here');
```
Angenommen wir haben einen Schritt mit 2 PHP-Ausführungsfunktionen, beide machen Inserts oder Updates.
1. Szenario JobRouterDB:
Wenn man via getJobDB Inserts und Updates macht und am Ende der zweiten Ausführungsregel JobRouterExcepted dann werden alle Änderungen der Regel(!), also beiden PHP-Funktionen, rollbacked. Dies halten wir für korrekt.
2. Szenario getDBConnection
Wenn man den gleichen Test macht mit getDBConnection zu einer anderen MSSQL-Datenbank dann rollt er keine einzige der Änderungen zurück. Nicht mal die aus der gleichen PHP-Funktion.
Siehe das Beispiel aus dem Feld "Sonstige Informationen". Werden diese beiden Inserts ausgeführt und danach direkt excepted dann wird bei getJobDB alles rollbacked, bei "externer" Datenbank nichts davon.
Ist das so korrekt?
Code:
```
$db = $this->getDBConnection('TestDB');
$sql = 'INSERT INTO TEST (field_one) VALUES (?)';
$this->jrSQLExecute($sql, ['xyz'], $db);
$sql = 'INSERT INTO TEST (field_two) VALUES (?)';
$this->jrSQLExecute($sql, ['abc'], $db);
throw new JobRouterException('Die here');
```
#frage
#datenbank
#workflow
Transaktionssicherheit bei Ausführungsregeln?
Transaktionssicherheit bei Ausführungsregeln?
Angenommen wir haben einen Schritt mit 2 PHP-Ausführungsfunktionen, beide machen Inserts oder Updates.
1. Szenario JobRouterDB:
Wenn man via getJobDB Inserts und Updates macht und am Ende der zweiten Ausführungsregel JobRouterExcepted dann werden alle Änderungen der Regel(!), also beiden PHP-Funktionen, rollbacked. Dies halten wir für korrekt.
2. Szenario getDBConnection
Wenn man den gleichen Test macht mit getDBConnection zu einer anderen MSSQL-Datenbank dann rollt er keine einzige der Änderungen zurück. Nicht mal die aus der gleichen PHP-Funktion.
Siehe das Beispiel aus dem Feld "Sonstige Informationen". Werden diese beiden Inserts ausgeführt und danach direkt excepted dann wird bei getJobDB alles rollbacked, bei "externer" Datenbank nichts davon.
Ist das so korrekt?
Code:
```
$db = $this->getDBConnection('TestDB');
$sql = 'INSERT INTO TEST (field_one) VALUES (?)';
$this->jrSQLExecute($sql, ['xyz'], $db);
$sql = 'INSERT INTO TEST (field_two) VALUES (?)';
$this->jrSQLExecute($sql, ['abc'], $db);
throw new JobRouterException('Die here');
```
Angenommen wir haben einen Schritt mit 2 PHP-Ausführungsfunktionen, beide machen Inserts oder Updates.
1. Szenario JobRouterDB:
Wenn man via getJobDB Inserts und Updates macht und am Ende der zweiten Ausführungsregel JobRouterExcepted dann werden alle Änderungen der Regel(!), also beiden PHP-Funktionen, rollbacked. Dies halten wir für korrekt.
2. Szenario getDBConnection
Wenn man den gleichen Test macht mit getDBConnection zu einer anderen MSSQL-Datenbank dann rollt er keine einzige der Änderungen zurück. Nicht mal die aus der gleichen PHP-Funktion.
Siehe das Beispiel aus dem Feld "Sonstige Informationen". Werden diese beiden Inserts ausgeführt und danach direkt excepted dann wird bei getJobDB alles rollbacked, bei "externer" Datenbank nichts davon.
Ist das so korrekt?
Code:
```
$db = $this->getDBConnection('TestDB');
$sql = 'INSERT INTO TEST (field_one) VALUES (?)';
$this->jrSQLExecute($sql, ['xyz'], $db);
$sql = 'INSERT INTO TEST (field_two) VALUES (?)';
$this->jrSQLExecute($sql, ['abc'], $db);
throw new JobRouterException('Die here');
```
#frage
#datenbank
#workflow
Transaktionssicherheit bei Ausführungsregeln?
Transaktionssicherheit bei Ausführungsregeln?
Angenommen wir haben einen Schritt mit 2 PHP-Ausführungsfunktionen, beide machen Inserts oder Updates.
1. Szenario JobRouterDB:
Wenn man via getJobDB Inserts und Updates macht und am Ende der zweiten Ausführungsregel JobRouterExcepted dann werden alle Änderungen der Regel(!), also beiden PHP-Funktionen, rollbacked. Dies halten wir für korrekt.
2. Szenario getDBConnection
Wenn man den gleichen Test macht mit getDBConnection zu einer anderen MSSQL-Datenbank dann rollt er keine einzige der Änderungen zurück. Nicht mal die aus der gleichen PHP-Funktion.
Siehe das Beispiel aus dem Feld "Sonstige Informationen". Werden diese beiden Inserts ausgeführt und danach direkt excepted dann wird bei getJobDB alles rollbacked, bei "externer" Datenbank nichts davon.
Ist das so korrekt?
Code:
```
$db = $this->getDBConnection('TestDB');
$sql = 'INSERT INTO TEST (field_one) VALUES (?)';
$this->jrSQLExecute($sql, ['xyz'], $db);
$sql = 'INSERT INTO TEST (field_two) VALUES (?)';
$this->jrSQLExecute($sql, ['abc'], $db);
throw new JobRouterException('Die here');
```
Angenommen wir haben einen Schritt mit 2 PHP-Ausführungsfunktionen, beide machen Inserts oder Updates.
1. Szenario JobRouterDB:
Wenn man via getJobDB Inserts und Updates macht und am Ende der zweiten Ausführungsregel JobRouterExcepted dann werden alle Änderungen der Regel(!), also beiden PHP-Funktionen, rollbacked. Dies halten wir für korrekt.
2. Szenario getDBConnection
Wenn man den gleichen Test macht mit getDBConnection zu einer anderen MSSQL-Datenbank dann rollt er keine einzige der Änderungen zurück. Nicht mal die aus der gleichen PHP-Funktion.
Siehe das Beispiel aus dem Feld "Sonstige Informationen". Werden diese beiden Inserts ausgeführt und danach direkt excepted dann wird bei getJobDB alles rollbacked, bei "externer" Datenbank nichts davon.
Ist das so korrekt?
#frage
#datenbank
#workflow
Transaktionssicherheit bei Ausführungsregeln?
Angenommen wir haben einen Schritt mit 2 PHP-Ausführungsfunktionen, beide machen Inserts oder Updates.
1. Szenario JobRouterDB:
Wenn man via getJobDB Inserts und Updates macht und am Ende der zweiten Ausführungsregel JobRouterExcepted dann werden alle Änderungen der Regel(!), also beiden PHP-Funktionen, rollbacked. Dies halten wir für korrekt.
2. Szenario getDBConnection
Wenn man den gleichen Test macht mit getDBConnection zu einer anderen MSSQL-Datenbank dann rollt er keine einzige der Änderungen zurück. Nicht mal die aus der gleichen PHP-Funktion.
Siehe das Beispiel aus dem Feld "Sonstige Informationen". Werden diese beiden Inserts ausgeführt und danach direkt excepted dann wird bei getJobDB alles rollbacked, bei "externer" Datenbank nichts davon.
Ist das so korrekt?