none
Sperren von Tabellen während Verarbeitung RRS feed

  • Frage

  • Hallo zusammen,

    ich schreibe mir Daten in eine Temporäre Tabelle, bearbeite diese und schreibe sie später wieder zurück. Kann ich die Ursprungstabelle so lange gegen Schreibzugriffe schützen, damit ich keine Inkonsistenzen bekomme?

    Grüße, Gerrit

    Freitag, 6. August 2010 14:41

Antworten

  • Hallo Gerrit,

    na, Du kannst ja Fragen haben ;-))

    Du könntest das ev. über einen Instead of-Trigger versuchen. Irgendwo mußt Du aber die Informationen hinterlegen, daß die Tabelle gesperrt werden soll.

    Im Trigger machst Du alle Änderungen wieder rückgängig, wenn der Parameter entspechend gesetzt ist.

    Das Ganze beeinflußt andere aber beim Arbeiten mit der Tabelle.

    Freitag, 6. August 2010 18:18
  • Hi Gerrit,

    create table t1 (id int)
    go
    
    create trigger tr_t1_all on t1
    instead of insert,update,delete
    as
    begin
      raiserror( 'Die Tabelle ist schreibgeschützt!', 16, 1)
      rollback tran
    end
    go
    
    disable trigger tr_t1_all on t1
    go
    
    enable trigger tr_t1_all on t1
    go
    

    Gruß Yury
    Freitag, 6. August 2010 20:20

Alle Antworten

  • Hallo Gerrit,

    na, Du kannst ja Fragen haben ;-))

    Du könntest das ev. über einen Instead of-Trigger versuchen. Irgendwo mußt Du aber die Informationen hinterlegen, daß die Tabelle gesperrt werden soll.

    Im Trigger machst Du alle Änderungen wieder rückgängig, wenn der Parameter entspechend gesetzt ist.

    Das Ganze beeinflußt andere aber beim Arbeiten mit der Tabelle.

    Freitag, 6. August 2010 18:18
  • Hi Gerrit,

    create table t1 (id int)
    go
    
    create trigger tr_t1_all on t1
    instead of insert,update,delete
    as
    begin
      raiserror( 'Die Tabelle ist schreibgeschützt!', 16, 1)
      rollback tran
    end
    go
    
    disable trigger tr_t1_all on t1
    go
    
    enable trigger tr_t1_all on t1
    go
    

    Gruß Yury
    Freitag, 6. August 2010 20:20
  • .... Temporäre Tabelle ...


    Hallo Gerrit,

    mit temporäre Tabelle, meinst Du damit ein #Tabelle? Die ist eher nur in aktuellen Kontext/Session verfügbar und niemand anders kann darauf zugreifen, dann würde sich das Problem von selbst erledigen.

    Oder handelt es sich um eine vorhandenen Tabelle, in der nur temporär Daten im ETL Prozess geladen werden?


    Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de
    Samstag, 7. August 2010 09:53