Thema: Delphi INSERTs verbinden

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#5

AW: INSERTs verbinden

  Alt 11. Jan 2012, 12:19
mr_id ist ein AutoInc-Field.

Im Prinzip geht es um sowas:
SQL-Code:
CREATE TABLE Personen (
  Person SERIAL PRIMARY KEY,
  Name VARCHAR(50) NOT NULL);

CREATE TABLE Körperteil (
  Person INTEGER NOT NULL REFERENCES Person ON UPDATE CASCADE,
  Name VARCHAR(50) NOT NULL,
  Größe INTEGER NOT NULL);



pID := INSERT INTO Personen (Name) VALUES ('Frank') RETURNING PersonId;
INSERT INTO Körperteile (Person, Name, Größe) VALUES (:pID, 'Nase', 10), (:pID, 'Mund', 20), (:pID, 'Augen', 5);

-- bzw.
pID := INSERT INTO Personen (Name) VALUES ('Frank') RETURNING PersonId;
INSERT INTO Körperteile (Person, Name, Größe) VALUES (:pID, 'Nase', 10);
INSERT INTO Körperteile (Person, Name, Größe) VALUES (:pID, 'Mund', 20);
INSERT INTO Körperteile (Person, Name, Größe) VALUES (:pID, 'Augen', 5);
...
Nur eben am Ende nur als ein einziges Statement.

Innerhalb von diesen komischen Prozeduren ginge sowas, aber in einer einfachen Query sieht es mit Variablen etwas schlecht aus.
SQL-Code:
CREATE FUNCTION ... AS #
DECLARE mrID INTEGER;
BEGIN
  SELECT mr_id INTO mrID FROM ...;
  
  INSERT INTO table VALUES (mrID, 'Nase', 10), (mrID, 'Mund', 20);
END#;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Jan 2012 um 12:32 Uhr)
  Mit Zitat antworten Zitat