Seite 1 von 1

2 Inserts in einem Rutsch mit Daten aus 1.Insert

Verfasst: Mi, 21. Dez 2022 12:25
von Manfred
Ich möchte gerne in einem Rutsch 2 Inserts machen in 2 verschienden tabellen.
1) einen neuen Satz anhängen in Tabelle A, der mit einer Auto-ID angefügt wird.
2) einen neuen Protokollsatz anhängen in Tabelle B, der die ID des vorher angelegten Satzes aus TAbelle A darin speichert.

Wie komme ich an Die ID des neuen Satzes in Tabelle A?

Re: 2 Inserts in einem Rutsch mit Daten aus 1.Insert

Verfasst: Mi, 21. Dez 2022 13:59
von nightcrawler
Trigger...der neue Datensatz steht in __new:

Code: Alles auswählen

create trigger ins_log on mytable after insert
begin
  insert into log select id, now(), user(), 'insert' from __new;
end;

Re: 2 Inserts in einem Rutsch mit Daten aus 1.Insert

Verfasst: Mi, 21. Dez 2022 14:10
von Marcus Herz
oder wenn kein Trigger erwünscht, also 2 getrennte INSERT

Code: Alles auswählen

declare @id integer;
insert into ....;
// @id ist die zuletzt vergebene AUTOINC
@id = (select lastautoinc(statement) from system.iota);
insert into ....

Re: 2 Inserts in einem Rutsch mit Daten aus 1.Insert

Verfasst: Mi, 21. Dez 2022 15:55
von UliTs
Bei 2 Insert aber auf jeden Fall mit Transaktionen arbeiten, damit keine Dateninkonsistenz eintreten kann.

Re: 2 Inserts in einem Rutsch mit Daten aus 1.Insert

Verfasst: Mi, 21. Dez 2022 16:00
von Manfred
wobei ich ja der meinung bin, das bei Transaktionen entweder alles oder gar nichts gespeichert wird!?
das ist mein script

Code: Alles auswählen

INSERT INTO schultraeger (id,nummer,bez,strasse,plz,ort,telefon,mail,rechnungschule,rechnungtraeger)
VALUES ('{#id#}','{#nummer#}','{#bez#}','{#strasse#}','{#plz#}','{#ort#}','{#telefon#}','{#mail#}',{#rechnungschule#},{#rechnungtraeger#});
INSERT INTO history (idsatz,programmteil,username,artdesvorgangs) VALUES ('{#id#}','schultraeger','{#username#}','neuer Satz')
und da war ein Fehler drin im 2. Insert und es wurde auch nichts gespeichert, weder der 1. noch der 2. Insert. Ich dachte es würde nur der Befehl nicht ausgeführt, der falsch ist....

Re: 2 Inserts in einem Rutsch mit Daten aus 1.Insert

Verfasst: Di, 27. Dez 2022 22:34
von UliTs
Manfred hat geschrieben: Mi, 21. Dez 2022 16:00...
Ich dachte es würde nur der Befehl nicht ausgeführt, der falsch ist....
So ist es meines Erachtens auch.

Re: 2 Inserts in einem Rutsch mit Daten aus 1.Insert

Verfasst: Mi, 28. Dez 2022 14:54
von nightcrawler
nur nicht, wenn er im gesamten übergebenen script einen Syntax-Fehler hat. Dann wird nichts gemacht, aber ein Fehler zurückgeliefert. Einfach mal im Architect probieren .... und in der Anwendung IMMER! (und nochmal !!!!!) die Rückgabewerte prüfen.