Hallo Ivo,
da gibt es ein Flag das man setzen kann um die Transaktion um mehrere Batchbl�cke zu
legen.
SET XACT_ABORT ON
BEGIN TRANSACTION
..... Code
COMMIT TRANSACTION
dann wird alles in einen Rollback eingeschlossen, was nach dem Begin kommt. (SQL
Server 2000)
Andreas
> -----Urspr�ngliche Nachricht-----
> Von: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Auftrag von Ivo Looser
> Gesendet: Dienstag, 11. Mai 2004 10:28
> An: [EMAIL PROTECTED]
> Betreff: [Coffeehouse] Transaction im SQL Server
>
>
> Hallo Zusammen
>
> Im beigef�gten Script m�chte ich aus einer Tabelle doppelte eintr�ge
> entfernen. Daf�r gehe ich folgendermassen vor:
>
> - Tempor�re Tabelle mit gleicher struktur wie die orginale
> - insert into group by orginaltabelle
> - delete orginaltabelle
> - insert into orginaltabelle from temptabelle
>
>
> Funktioniert soweit so gut. Nu m�chte ich aber nicht das im
> fall bei einem
> fehler alle meine Daten aus der Orginal tabelle weg sind. Ich
> habe versucht
> eine Transaction um die die prozedure zu h�ngen.
> Jedoch wird auch bei einem fehler kein rollback durchgef�hrt.
>
>
> Habt ihr eine Idee wieso das so ist? Gibt es eventuell eine
> m�glichkeit das
> in einem einzigen SQL zu l�sen?
>
> P.s. es wird absichtlich ein fehler durch die sp generiert.
>
>
> Danke f�r eure hilfe. Viele Gr�sse Ivo
>
> create table t1(col1 int, col2 int, col3 char(50))
> insert into t1 values (1, 1, 'data value one')
> insert into t1 values (1, 1, 'data value one')
> insert into t1 values (1, 2, 'data value two')
> insert into t1 values (1, 2, 'data value two')
> insert into t1 values (1, 2, 'data value two')
> insert into t1 values (2, 3, 'data value tree')
> insert into t1 values (2, 3, 'data value tree')
> insert into t1 values (3, 4, 'data value four')
> go
>
>
>
> IF EXISTS (SELECT name
> FROM sysobjects
> WHERE name = N'RemoveDublicateFromT1'
> AND type = 'P')
> DROP PROCEDURE RemoveDublicateFromT1
> GO
>
> CREATE PROCEDURE RemoveDublicateFromT1
> AS
>
> Begin Transaction Cleanup
> create table #t1(col1 int, col2 int, col3 char(2))
>
> insert into #t1
> SELECT col1, col2, col3
> FROM t1
> GROUP BY col1, col2, col3
>
>
> delete from t1
>
> insert into t1 Select * from #t1
>
> select count(*) from #t1
>
> select count(*) from t1
>
> if @@error != 0
> begin
>
> rollback Transaction Cleanup
> return
>
>
> end
>
> Commit Transaction Cleanup
>
> GO
>
> -- =============================================
> -- example to execute the store procedure
> -- =============================================
> EXECUTE RemoveDublicateFromT1
> GO
>
>
> drop table t1
>
>
>
> _______________________________________________
> Coffeehouse Mailingliste, Postings senden an:
> [EMAIL PROTECTED]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/coffeehouse
>
_______________________________________________
Coffeehouse Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/coffeehouse