Announcement

Collapse
No announcement yet.

StoredProcedure Delete command wird nicht fertig ausgeführt, bevor der INSERT beginnt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • StoredProcedure Delete command wird nicht fertig ausgeführt, bevor der INSERT beginnt

    Hi,

    Ich habe 2 Stored Procedures, die eine zum löschen (StoredProcedure1) und die andere zum neu schreiben INSERT (StoredProcedure2)


    1. Example:
    Code:
    StoredProcedure1
    	DELETE FROM TABLE1 WHERE X=1
    	CALL StoredProcedure2 to Insert
    
    
    
    
    StoredProcedure2
    	INSERT INTO TABLE1 (X) VALUES (1)




    aber dann bekomme ich immer "Doublicate Key Error", weil der Datensatz noch nicht gelöscht wurde
    irgendwie scheint es als ob der INSERT schon ausgeführt wird, bevor der DELETE fertig ist


    To test the DELETE Command, i don't start the "CALL StoredProcedure2 to Insert"
    and then the DELETE work's fine, are records are sucessfull deleted:
    Um den DELETE zu testen, mache ich den CALL StoredProcedure2 to Insert raus
    und dann funktioniert es auch, alle Daten werden gelöscht:

    Code:
    StoredProcedure1
    	DELETE FROM TABLE1 WHERE X=1
    	-- CALL StoredProcedure2 to Insert


    die einzige Lösung die ich jetzt gefunden habe ist:


    2. Example

    Code:
    StoredProcedure1
     	CALL StoredProcedure3 to DELETE
      	CALL StoredProcedure2 to INSERT
    
    
    
    StoredProcedure3
    	DELETE FROM TABLE1 WHERE X=1
    
    
    StoredProcedure2
    	INSER INTO TABLE1(X) VALUES (1)

    Warum wird der Delete in StoredProcedure1 nicht richtig ausgeführt?


    die gleichen Schritte mache ich in StoredProcedure1 mit einer anderen Tabelle
    und da funktioniert es...

    hat jemand eine Idee, warum es nicht richtig funktioniert?
    Warum wird der DELETE befehl nicht bis zum Ende ausgeführt, wenn der INSERT command beginnt?


    Danke !
    Gruß Rayman

  • #2
    Hallo,

    ich denke, dass die Transaktion erst mit dem Ende der stored procedure (delete) beendet wird und die zweite stored procedure (insert) eine eigene transaktion bekommt. Dann ist der Satz noch nicht gelöscht, wenn der Insert kommt. Mit zwei Calls ist die erste Transaktion fertig, wenn die zweite beginnt.

    Gruß
    Uschi

    Comment


    • #3
      ja, die Vermutung ist schon richtig
      die eine Transaktion ist noch nicht fertig,
      wenn die andere schon beginnt

      kann man irgendwo die Transaktion-Reihenfolge festlegen?
      So dass ich z.B. die "CALL StoredProcedure2 to INSERT" erst am Ende der
      StoredProcedure1
      ausführen lasse?

      wo könnte man so etwas festlegen?

      (also wenn ich das einfach nur weiter unten im Code schreibe, oder den DELETE ganz oben, ändert sich nichts, der Fehler bleibt)

      Comment

      Working...
      X