Programmer - an organism that turns coffee into software.
1
2
3
| BEGIN TRAN INSERT INTO ... COMMIT TRAN |
* whoami weet niet zeker of dit wel werkt...
https://fgheysels.github.io/
Voor logging doeleinden kan ik me er idd nog wel iets bij voorstellen.Verwijderd schreef op vrijdag 02 september 2005 @ 12:06:
Hoort de stored procedure wel in de transactie thuis dan?
Ik zou idd het voorstel van whoami eens proberen. dat lijkt me de beste oplossing.
[edit]
mmm het lijkt er toch op dat een inner transaction alsnog gerollbacked wordt als de parent transaction rollback wordt
[ Voor 17% gewijzigd door Woy op 02-09-2005 12:24 ]
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Verwijderd
Dat was het eerste wat mij ook te binnen schoot, maar ook logging behoort naar mijn mening niet binnen een transactie.rwb schreef op vrijdag 02 september 2005 @ 12:20:
Voor logging doeleinden kan ik me er idd nog wel iets bij voorstellen.
Ik zou idd het voorstel van whoami eens proberen. dat lijkt me de beste oplossing.
Het ligt eraan op welk nivo je wilt loggen. Ik kan me best voorstellen dat je wat op database nivo wilt loggen en dat je op applicatie nivo een transaction start. De logging is dan niet van belang voor de applicatie en die start dus ook gewoon een transaction om te zorgen dat zijn data correct is.Verwijderd schreef op vrijdag 02 september 2005 @ 12:31:
[...]
Dat was het eerste wat mij ook te binnen schoot, maar ook logging behoort naar mijn mening niet binnen een transactie.
Ik weet niet precies wat de logs van de database zelf opslaan maar mischien is dat in dit geval niet genoeg.
Verder kan ik idd ook niet echt dingen bedenken die je buiten je transaction wilt houden. Als je op applicatie nivo wilt loggen moet je het idd gewoon buiten de transaction houden.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Ook als die inner transaction ondertussen ge-commit is ?rwb schreef op vrijdag 02 september 2005 @ 12:20:
[...]
[edit]
mmm het lijkt er toch op dat een inner transaction alsnog gerollbacked wordt als de parent transaction rollback wordt
Hmm, kan zijn. Ik had het niet getest.
https://fgheysels.github.io/
volgens de MSSQL documentatie ieder geval welOok als die inner transaction ondertussen ge-commit is ?
Hmm, kan zijn. Ik had het niet getest.
SET QUOTED_IDENTIFIER OFF
GO
SET NOCOUNT OFF
GO
USE pubs
GO
CREATE TABLE TestTrans(Cola INT PRIMARY KEY,
Colb CHAR(3) NOT NULL)
GO
CREATE PROCEDURE TransProc @PriKey INT, @CharCol CHAR(3) AS
BEGIN TRANSACTION InProc
INSERT INTO TestTrans VALUES (@PriKey, @CharCol)
INSERT INTO TestTrans VALUES (@PriKey + 1, @CharCol)
COMMIT TRANSACTION InProc
GO
/* Start a transaction and execute TransProc */
BEGIN TRANSACTION OutOfProc
GO
EXEC TransProc 1, 'aaa'
GO
/* Roll back the outer transaction, this will
roll back TransProc's nested transaction */
ROLLBACK TRANSACTION OutOfProc
GO
EXECUTE TransProc 3,'bbb'
GO
/* The following SELECT statement shows only rows 3 and 4 are
still in the table. This indicates that the commit
of the inner transaction from the first EXECUTE statement of
TransProc was overridden by the subsequent rollback. */
SELECT * FROM TestTrans
GO
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Dat is het hele idee achter nested transactionswhoami schreef op vrijdag 02 september 2005 @ 12:43:
[...]
Ook als die inner transaction ondertussen ge-commit is ?
Hmm, kan zijn. Ik had het niet getest.
Een transaction is als geheel altijd per definitie een all-or-nothing situatie (de A van ACID). Een nested transaction is voornamelijk nuttig om lock contingency te voorkomen binnen een grote transaction, en natuurlijk binnen stored procedures, zou erg lullig zijn als het resultaat van een beveilige SP wel gecommit zou worden terwijl de transaction als geheel faalt.
[ Voor 15% gewijzigd door curry684 op 02-09-2005 13:10 ]
https://fgheysels.github.io/