Seite 2 von 2

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 10:00
von Manfred
wieso muß er da liegen? Da steht nachher nur die ID drin. Und die ist einwandfrei schonmal erzeugt worden einige Sätze vorher. ich bin genauso verwirrt wie ... keine Ahnung wer noch verwirrt ist. :shock:

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 10:08
von Martin Altmann
Mach mal deine Zuweisungen nicht in der LOCAL-Definition. Zumindest ich würde an der Stelle mal drehen.

Viele Grüße,
Martin

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 11:06
von ramses
Versuche mal das "TEXT INTO" durch eine normale Variablenzuweisung zu ersetzen und darauf zu Verzichten. Es gibt einige Zeichenfolgen die passen da nicht rein.

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 12:04
von Manfred
den mußt Du mir jetzt mal erklären, wie der gemeint ist.

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 12:29
von ramses

Code: Alles auswählen

  cSqlStmt := "INSERT INTO {#tabelle#} (id, {#cFelder#}) VALUES ('{#cid#}' , {#cValues#})"

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 12:30
von Manfred
und das erklärt jetzt was Du meinst?
Interessant.

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 15:33
von Werner_Bayern
Servus Manfred,

ich wette, Dein SQL-Feld ist zu klein 8)

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 15:36
von Manfred
ich verstehe immer weniger was die Vorschläge mit dem Problem der doppelten Erzeugung zu tun haben? Das Feld hat eine Breite von 36 Zeichen und solche Felder nutze ich schon seit einigen Jahren.

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 16:01
von nightcrawler
Du nutzt dch ADS...da gibt es NewID().

Code: Alles auswählen

INSERT INTO MYTABLE(ID, Text) SELECT newID(), anytext FROM OtherTable;

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 16:03
von Werner_Bayern
Läuft einwandfrei durch:

Code: Alles auswählen

#include "Common.ch"
#include "pgdbe.ch"


PROCEDURE Main
LOCAL cConnect, oSession, nStart, i

cConnect := "DBE=pgdbe;SERVER=localhost;DB=test;UID=postgres;PWD=xxx"
oSession := DacSession():New( cConnect )

// Check for connection success
IF .NOT. oSession:isConnected()
 ? oSession:GetLastMessage()
 Alert( "Unable to establish connection to server", {"Quit"} )
 QUIT
ENDIF


if .not. oSession:executeStatement("create table if not exists public.manfred (uuid character(36))")  // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
   ? oSession:GetLastMessage()
   wait
   quit
endif

if .not. oSession:executeStatement("create unique index if not exists manfred_uuid on public.manfred (uuid)")
   ? oSession:GetLastMessage()
   wait
   quit
endif

nStart := seconds()
for i := 1 to 300000
   if .not. oSession:executeStatement("insert into manfred (uuid) VALUES ('" + UuidToChar(UuidCreate()) + "')")
      ? oSession:GetLastMessage()
      wait
      quit
   endif
next i

? "Dauer:", seconds() - nStart

oSession:disconnect()
wait
return

procedure dbesys
  // Load the PostgreSQL DatabaseEngine
  IF(!DbeLoad("pgdbe"))
    Alert( "Unable to load the PostgreSQL DatabaseEngine", {"Quit"} )
    QUIT
  ENDIF
  return

Re: UUId als Key in Dbase-Tabellen unter Clipper [Erledigt]

Verfasst: So, 28. Aug 2022 16:15
von Manfred
@Joachim,
nachdem ich in Deinem Buch die Stelle dazu fand, nutze ich das jetzt auch. Ich hatte nur anfänglich einfach nicht hinbekommen, das der ADS das jedesmal automatisch macht. Dann kam ich auf den DEFAULT Wert baute die Funktion da ein und siehe da, jetzt habe ich das was ich immer wollte.

@Werner,
ich glaube es Dir, bisher gab es auch nie Probleme damit. Nur bei mir ist es nun mal so gewesen. Was soll ich sagen? Ich hatte es nur nie in einer Schleife gemacht, so wie jetzt.
Ist aber jetzt auch Wurscht. Ich mache das mit der Funktion im ADS.