![]() |
Datenbank: ib6 • Version: 6 • Zugriff über: sql
select ergebnis in blob speichern. gehts?
hallo,
ich würde gerne sql abfragen in einem blob-feld speichern. damit will ich eine art history der db-zustände realisieren. kann das klappen? :-) gruß |
Re: select ergebnis in blob speichern. gehts?
Willst du den Abfragestring oder das komplette Ergebnis speichern?
Ich würde aber die History anders lösen: Entweder über Trigger der Schattenkopie erzeugt oder den Datensatz um Datumswert ergänzen und dann nicht ändern sondern neuen Wert erzeugen. |
Re: select ergebnis in blob speichern. gehts?
Gegenfrage: Warum sollte es nicht klappen?
Die beste Möglichkeit dies herauszufinden ist doch, es selber zu testen :zwinker: Oder stelle deine Frage etwas genauer! Willst du wissen wie lange das etwa gut geht bis das Blog voll ist oder wie? :gruebel: Flare |
Re: select ergebnis in blob speichern. gehts?
@mkinzler: nö. das klappt so nicht. mit *fuck.... hab den begriff vergessen...* naja. also kopie dingens da.... :-)
eine kopie der ganzen db ist hier nicht sinnvoll. da über stored proceduren der alte zustand noch abgefragt werden soll. @flare. :-) jupp. du hast sicher recht. aber irgendwie war ich gerade zu faul das zu testen. hab gehofft das hat schon jemand mal so gemacht. dank euch! :-) |
Re: select ergebnis in blob speichern. gehts?
aaaaslo, hier ist der erste (misslungene Test) :-(
SQL-Code:
die fehlermeldung ist
CREATE PROCEDURE NEW_PROCEDURE
AS DECLARE VARIABLE TEMP BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET NONE; begin /* Procedure Text */ SELECT * FROM EBENEN INTO TEMP; /*insert INTO BUCHUNGEN (BU_EBENENSTATUS) VALUES(:TEMP); */ suspend; end^ Zitat:
mfg |
Re: select ergebnis in blob speichern. gehts?
Zitat:
Du duplizierst sinnlos Daten, diese sind dann auch noch durch einen Medienbruch unstrukturiert in einem BLOB. Möglich wären 4 Tabellen
Anhand einer Tabelle in der Filterbedingungen stehen wurden so automatisch die MetaXX-Tabellen synchron gehalten und für jedes Feld Trigger generiert, die alle Änderungen des Feldes protokollieren. Bei einem solchen AuditLog sollte man nie auf die Idee kommen den vollen Objektnamen abzulegen. Dadurch wird das Ding a) unnötig groß und b) werden Abfragen beschissen langsam. ;) edit: noch mehr Copy&Waste... edit2: RecordId & PrimaryKeyField vergessen |
Re: select ergebnis in blob speichern. gehts?
:coder2: :nerd:
ahh jah! so wirds also gemacht. ohne eine strukturierte programmierausbildung fallen manche sachen halt "etwas" schwer. :-) vielen dank für den ansatz! obwohl ich mir die abläufe schon ganz gut vorstellen kann, wäre ein beispiel super. :-) gruß |
Re: select ergebnis in blob speichern. gehts?
Zitat:
Welche Tabellen sollen protokolliert werden -> MetaTables Welche Felder davon -> MetaFields Die UserIds ambesten OnDemand über eine SProc Abfragen/Einfügen (gibt es User in MetaUser noch nicht -> anlegen). beim Trigger würde sowas stehen (Vorsicht habe die PSQL Sytax nicht im Kopf, ist also reiner Pseudocode!)
Delphi-Quellcode:
Das könntest du dir erstmal einfach aus MetaTables & MetaFields für jedes aktive Feld generieren lassen.
create trigger Audit$$1 -- Die ID aus MetaFields
before insert or update or delete on ->Tabelle<- for each row as userID integer; changeType integer; newValue varchar(XXX); begin if inserting and :New.->FeldName<- is not null then changeType := 0; newValue := :New.->FeldName<-; elsIf updating and (:New.->FeldName<- is not null or :Old.->FeldName<- is not null) then if :New.->FeldName<- is null then changeType := 2; elsIf :Old.Feld is null then changeType := 0; elsIf :New.->FeldName<- != :New.->FeldName<- then changeType := 1; end if; newValue := :New.->FeldName<-; elsIf deleting and :Old.->FeldName<- is not null then changeType := 2; newValue := null; end if; if changeType is not null then userID := getUser(CurrentUser);-- Die Sproc, die ich oben erwähnte INSERT INTO AuditLog ( ,Field ,RecordId ,ChangeType ,ChangeDate ,User ,Value) VALUES (1 -- Die ID aus MetaFields ,:New.->PrimaryKeyFeldName<- ,changeType ,SysDate ,userId ,newValue); end if; end; Falls ich die alte DB nicht mehr finden sollte, kann ich ja mal schauen ob ich es aus dem Kopf zusammenkriege (ich habe seeehr selten mit FB zu tun ;) ) edit: hatte den PK des Datensatzes vergessen, sowas passiert wenn man sich irgendwelchen kranken Käsen aus den fingern saugt. :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz