# Noch ein problem



## Manuela (5. Nov 2008)

Hallo

mein Trigger geht, aber 
wie kann ich den Kompletten SQL String (Insert into bla ... ) ermitteln ohne die Einzelnen spalten anzusprechen.
sql_string_datenbank() oder ???


Gruß Manuela


----------



## GilbertGrape (5. Nov 2008)

ich vermute, dass du auch diese Frage in ca. 10 Minuten selbst beantworten kannst, so wie bei den 2 vorherigen.
Bist wohl ein wenig voreilig


----------



## Manuela (5. Nov 2008)

nein
 ich habe in meinem schlauen Buch nur gefunden eine 1 zu 1 Kopie zu erstellen aber nicht den 
Sql String( Sql befehl) zu ermitteln .

also ein wenig hilfe wäre super.

Gruß Manuela


----------



## Manuela (5. Nov 2008)

Hat keiner eine Idee???

Gruß Manuela.


----------



## Guest (5. Nov 2008)

Manuela hat gesagt.:
			
		

> Hallo
> 
> mein Trigger [...]



Trigger sind soweit ich weiß DBMS-spezifisch. Du solltest also dein DBMS verraten.

Ein aussagefähiger Titel wäre auch erwünscht.


----------



## SlaterB (5. Nov 2008)

worum gehts überhaupt, 

> wie kann ich den Kompletten SQL String (Insert into bla ... ) ermitteln

wo, in deiner Java-Klasse, in der DB?, wer ruft das wann wo wie warum auf?,
auf welchen (anderen?) SQL-String soll sich das beziehen?

und als aller aller aller wichtigste Grundlage: von welcher DB sprichtst du überhaupt?

> sql_string_datenbank()

was um alles in der Welt sollen diese Buchstaben für eine Bedeutung innehaben?

-------

ich kann zwar sehr wahrscheinlich auch nach weiteren Erklärungen nix dazu sagen, 
aber die Frage ist ja mächtig unpräzise


----------



## manuela (5. Nov 2008)

Hallo alle zusammen,

ich versuche das problem genauer zu erklären.

ich habe ein Mysql 5.1 Datenbank 

und angeblich verschwinden immer wieder einmal Daten und das "Ohne einwirkung von anderen" (was ich nicht so ganz glauben kann).

darauf hin will ich auf alle relevanten Tabellen einen Trigger (Insert und Update ) einsetzen der in einer anderen 
Tabelle vollgende Daten speichern soll ( Name , Tag , Uhrzeit , und den Kompletten sql-String) um später bei problemen nachvollziehen zu können was und von wem die Eingaben stammen.

also nun nocheinmal meine Frage ich habe ein MySQL Datenbank 5.1

mein Trigger soll so aussehen


```
CREATE TRIGGER offers_dir_Insert
   BEFORE INSERT ON offers_dir FOR EACH ROW
   Begin
      INSERT sichern.offers_dir_hist(offers_nr,tag,zeit,users_offers,sqlString)
      values(new.offers_nr,(Select date(now())),(Select time(now())),USER(),
                 <Hier soll der komplette Insert String hin> ) ;
   
  end$$
```

Gruß Manuela


----------



## Manuela (5. Nov 2008)

hallo keiner eine Idee wie man das lösen kann ??


```
CREATE TRIGGER offers_dir_Insert 
   BEFORE INSERT ON offers_dir FOR EACH ROW 
   Begin 
      INSERT sichern.offers_dir_hist(offers_nr,tag,zeit,users_offers,sqlString) 
      values(new.offers_nr,(Select date(now())),(Select time(now())),USER(), 
                 (Select * from offers_dir where offers_nr=NEW.offers_nr)) ; 
    
  end$$
```

Hat auch nicht funktioniert.

dann habe ich alle spalten mit NEW.offers_....  gemacht in der Hoffung das das funktioniert aber auch das geht nicht sobald eine spalte eine null hat ist es zu ende.

das kann doch nicht so schwer sein den INSERT-String  zu bekommen, den der Client schickt!!!

Gruß Manuela


----------



## Manuela (5. Nov 2008)

Hilfe , ist den keiner da der ein tipp hat???


----------



## maki (5. Nov 2008)

>> Hilfe , ist den keiner da der ein tipp hat???

Schreib ein Log in eine Text oder XML Datei, so wie normale Menschen das normalerweise machen.

Das Problem hört sich an, als ob du deine Anwendung nicht threadsicher gemacht hast.

zB:
Wie ermittelst du die ID des zuletzt eingefügten Datensatzes?
Ich hoffe nicht mit select max....


----------



## Manuela (5. Nov 2008)

Hallo,

natürlich nicht mit select max(...

sondern mit  ("SELECT LAST_INSERT_ID()");

aber dennoch muß es doch einen Möglichkeit geben in der mysql datenbank sich den Command (Insert into ...) 
anzeigen bzw. als String speichern zu können ?

gru0 Manuela


----------

