Forum
Hallo Perix
Immer bei negativen?
Nein nur bei einigen negativen SQLCodes wie z.B. -724, -30025, -911 usw. (eventuell auch bei -905, -917). Der bekannteste SQLCode ist sicherlich -911 (Deadlock oder Timeout).
Kann man das steuern?
Teilweise. Zum Beispiel bei CICS Transaktionen anhand des ROLBE und/oder ROLBI Parameter (SQLCODE -911 oder -913).
Geht das ?
Nein, lass die Finger davon! Bei einem automatischen Rollback wird die ganze Unit of Work (will heissen alles seit dem letzten Commit in DB2) zurückgerollt. Deine Transaktion (wie auch das DBMS) sollte/muss die ACID Prinzipien http://en.wikipedia.org/wiki/ACID einhalten. Wenn du nach einem Rollback weiter machst, hast du ziemlich sicher keine Kontrolle mehr darüber ob die Daten welche deine Transaktion bewirtschaftet konsistent sind oder nicht.
Weiter empfehle ich dir Jim Gray zu berücksichtigen: "Fail fast module: A module that either functions correctly or raises an exception and stops until it is repaired. Falilfast behavior is important because latent errors can turn a single fault into a cascade of faults. Mechanisms to deal with rare events should be simple, cheap, and reliable!" (Jim Gray, Transaction Processing: Concepts and Techniques )
Gruss
hke