AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stored pocedure

Ein Thema von kiar · begonnen am 17. Mai 2004 · letzter Beitrag vom 21. Mai 2004
Antwort Antwort
Seite 3 von 4     123 4      
Robert_G
(Gast)

n/a Beiträge
 
#21

Re: Stored pocedure

  Alt 18. Mai 2004, 23:32
Im Normalfall will man mit dem Wert arbeiten, wird nix gefunden, kannst du das Ergebnis gegen NULL prüfen.
Außerdem war Raiks Code genausowenig für den Produktiveinsatz gedacht, wie es meiner war.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#22

Re: Stored pocedure

  Alt 18. Mai 2004, 23:45
Zitat von Robert_G:
Außerdem war Raiks Code genausowenig für den Produktiveinsatz gedacht, wie es meiner war.
Nein, Raiks Code war schon dafür gedacht. Hast Du das nicht gemerkt ? Warum sollte er sonst so eine Frage stellen ? Bei Datenbanken geht es immer um was wichtiges/kommerzielles.

Ich habe ihm gesagt, er solle einen Trigger verwenden, der geht aber bei mir seltsamerweise auch nicht richtig.

[BEGINN OT]
Du setzt doch Ora wohl nicht im Kindergarten ein, oder ?
[ENDE OT]
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#23

Re: Stored pocedure

  Alt 18. Mai 2004, 23:46
Ich dachte es sei mehr eine generelle Frage gewesen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#24

Re: Stored pocedure

  Alt 19. Mai 2004, 00:00
was kiar vor hat ist folgendes : zu jedem Datensatz soll das Datum des erstmaligen Erstellens festgehalten werden und das Datum, wenn irgendeiner was ändert. Noch besser wäre es, so habe ich vorgeschlagen, auch noch die ändernde/anlegende Workstation mit zu speichern (für jeden Datensatz).

Das ist wohl schon (meiner Meinung nach) in einem BI/BU Trigger aufgehoben. Kiar meint aber eine Stored Procedure sei dafür besser.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#25

Re: Stored pocedure

  Alt 19. Mai 2004, 00:20
Das klingt für mich nach Qualitätssicherung und ISO 9001 Audit trial.

Jede Tabelle bekommt ein Feld EditUser und EditDateTime, die werden BU/BI gesetzt.

Billige Lösung:
Ein BU / BD Trigger, der eine Kopie des Datensatzes vor der Änderung in den Audit trial schreibt (bei der billigen Lösung wäre es eine Tabelle mit gleicher Struktur)
In der "richtigen" Tabelle steht also der aktuelle Datensatz mit dem User, der ihn geändert/erzeugt hat, im Audit trial stehen alle Änderungen davor.

Die aufwendigere Lösung wäre EIN Audit für alle Tabellen (, die ein Audit brauchen) pro Tabelle / Feld.
Das wäre dann eine Tabelle, in der der Tabellenname (hier kann auch ein FK zur TabellenID in deinem Data Dictonary, falls vorhanden , rein), PK, FeldName (kann ebenfalls auf eine DataDict-Tabelle zeigen), alter Wert, vorheriger EditUser und EditDateTime hinterlegt werden.
Wenn du die Tabelle nach Tabellenname partitionierst dürften die Abfragen darauf nicht langsam werden (die wird ewig lang werden!)
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#26

Re: Stored pocedure

  Alt 19. Mai 2004, 00:31
hallo robert,

genau auf deine letzte lösung sollte es herauslaufen.
schön wie du das dargestellt hast

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#27

Re: Stored pocedure

  Alt 19. Mai 2004, 01:02
so ungefähr solls wohl sein. Aber das mit dem "Audit Trail" ist zuviel des guten, es geht erstmal darum, daß die Trigger/Procedures sauber laufen.

Da es um IB/FB geht, steht zudem ein BDR (Back Difference Record) zur Verfügung (leider sonst nirgends ) , der die noch nicht committeten Operationen speichert.

Wie der aber ausgewertet werden kann, weiß niemand.

Im Moment geht es lediglich darum, das Datum eines Inserts und das des letzten Updates festzuhalten. Am besten natürlich noch ein Delete. Und eben, wer das war. Für eine Art Logbuch bräuchte man im Prinzip nur eine Extra Tabelle, ungefähr so wie Robert gesagt hat : 4 Felder, Operationstyp (insert, update delete), Operations-Datum, User und irgendeinen zusammengebastelten string, um den DS im nachhinein zu indentifizieren.

Im Moment besteht das Problem allerdings darin, daß bei mir der Trigger nicht richtig läuft und bei kiar die SP auch nicht. 8)

Also : Anforderung ist, das Feld ANGELEGT bei einem INSERT mit dem aktuellen Timestamp zu belegen. Und bei jedem Update [EDIT] das Feld LETZTEAENDERUNG [ENDE EDIT], wobei vorerst das ältere Datum ruhig überschrieben werden kann unter dem Motto : "der letzte hat gewonnen"
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#28

Re: Stored pocedure

  Alt 19. Mai 2004, 01:57
Hallo,

Zitat von Robert_G:
Rüchkgabewert -> Function, oder ist der IB Dialekt so verschieden von PL/SQL?
Ja, Oracle PL/SQL und IB SQL sind unterschiedlich

Zitat von Hansa:
so ungefähr solls wohl sein. Aber das mit dem "Audit Trail" ist zuviel des guten, es geht erstmal darum, daß die Trigger/Procedures sauber laufen.

Da es um IB/FB geht, steht zudem ein BDR (Back Difference Record) zur Verfügung (leider sonst nirgends ) , der die noch nicht committeten Operationen speichert.

Wie der aber ausgewertet werden kann, weiß niemand.

Im Moment geht es lediglich darum, das Datum eines Inserts und das des letzten Updates festzuhalten. Am besten natürlich noch ein Delete. Und eben, wer das war. Für eine Art Logbuch bräuchte man im Prinzip nur eine Extra Tabelle, ungefähr so wie Robert gesagt hat : 4 Felder, Operationstyp (insert, update delete), Operations-Datum, User und irgendeinen zusammengebastelten string, um den DS im nachhinein zu indentifizieren.

Im Moment besteht das Problem allerdings darin, daß bei mir der Trigger nicht richtig läuft und bei kiar die SP auch nicht. 8)

Also : Anforderung ist, das Feld ANGELEGT bei einem INSERT mit dem aktuellen Timestamp zu belegen. Und bei jedem Update [EDIT] das Feld LETZTEAENDERUNG [ENDE EDIT], wobei vorerst das ältere Datum ruhig überschrieben werden kann unter dem Motto : "der letzte hat gewonnen"
also... *räusper*
Ich habe mit Oracle mal eine sehr schöne Audit-Trail Lösung im Rahmen meines Praktikums implemtiert. Für diesen Fall würde ich aber vorschlagen, in jede relevante Tabelle die folgenden vier felder einzufügen
SQL-Code:
Created_date Timestamp Not Null,
Created_By Integer Not Null, -- oder auch String
Modified_Date TimeStamp Not Null,
Modified_by Integer Not Null
und dann bei jedem entsprechenden Statement die felder created_by und modified_by/Modified_Date (<=CURRENT_TIME verwenden) zu übergeben. So eine Lösung habe ich für jede meiner Tabellen und die Anwender sinds zufrieden.
Dann braucht man nur einen trigger pro tabelle, der das created_date auf die Systime des Servers setzt und gut ist. Keine extra procedure und sonstigen kram und auch keine extra tabelle - Zumindest nicht für ein rudimentäres "Trailing".
Ein Audit Trail benötigt auf jeden Fall eine Extra-Tabelle und da ist es erst mit den generischen Trigger ab FB 1.5 wirklich schön zu implementieren.
Wenn es noch mit nem Delete sein soll, ist es natürlich die sache.... Aber ohne geht das so ganz gut.

[edit]
Zitat:
uch noch die ändernde/anlegende Workstation mit zu speichern (für jeden Datensatz).
das ist natürlich so ein problem. Du benötigst dazu am besten die connection id und die ist soweit ich weiß erst ab FB 1.5 verfügbar....

Habe jetzt gerade gelesen, daß kiar einen Audittrail haben will, und da ist es wie gesagt richtig schön erst mit FB 1.5 aber mit den anderen FBs/IBs natürlich auch kein Problem...

[/edit]
Gruß
Ken
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#29

Re: Stored pocedure

  Alt 19. Mai 2004, 09:54
hallo ken,

hansa und ich philosophieren an dem gleichen thema,

ich bin mit IB 6.0 und hansa mit FB 1.0 an die sache gegangen.
im endeffect suchten wir eine allgemeingültige Variante. ich muss wohl auf FB 1.5 oder das thema knicken.

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#30

Re: Stored pocedure

  Alt 19. Mai 2004, 10:15
@CenBells
Dein Vorschlag wäre im endeffekt das, was ich als "billige Lösung" vorgeschlagen habe, nur das die Felder
SQL-Code:
Created_date Timestamp Not Null,
Created_By Integer Not Null, -- oder auch String
sinnlos sind.
In der aktiven Tabelle steht der User & das Datum der letzten Änderung, im Audit wäre der Eintrag mit der kleinsten Audit ID zu dieser PK der Eintrag mit dem "Erzeuger". Dabei fällt mir auf: Auch das Audit bräuchte natürlich einen PK.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz