PDA

View Full Version : UUID



Seiten : [1] 2

Dschainers
29-11-22, 14:56
gibt es auf der AS400 einen ähnlichen SQL Befehl wie den SELECT NEWID()

auf dem SQL Server?

Wenn ja, kann ich ein Beispiel haben?

Vielen Dank

Fuerchau
29-11-22, 15:00
Nein, gibt es leider nicht.
Hier musst du die C-Funktion GENUUID aufrufen, die dann die MI-Instruction aufruft:
https://www.ibm.com/support/pages/genuuid-can-generate-more-random-uuid

BenderD
29-11-22, 15:05
... mit GENUUID wäre ich vorsichtig, da hieß es in der Doku "most likely unique" und auf Multiprozessor-Maschinen gab es Kollisionen und ich gehe mal davon aus, dass das immer noch so ist.

D*B

dschroeder
29-11-22, 15:12
So weit ich weiß, gibt es das nicht direkt in SQL. Aber es gibt eine von IBM eine API "_GENUUID", mit der man mit RPG UUIDs generieren kann. Wenn man so ein RPG-Programm hat, könnte man das eine SQL-UDF einpacken und man hätte die gewünschte Funktion auch im SQL.

Hier ein Beispiel für das RPG:



dcl-proc um_crtUUID export;
dcl-pi *n char(36)
end-pi;

D UUID_template Ds
D UtBytPrv 10u 0 Inz( %Size( UUID_template ))
D UtBytAvl 10u 0
D 8a Inz( *Allx'00' )
D UUID 16a
D Reply 1a

D GenUuid PR ExtProc('_GENUUID')
D UUID_template * Value

GenUuid( %Addr( UUID_template ));

return UUID;

end-proc;

Dschainers
29-11-22, 15:17
OK vielen Dank für die Hinweise.

Das RPG Beispiel kenne ich schon
GENUUID ist ja vllcht wirklich nichts

Na denn, ich hab gedacht es gibt einen fertigen SQL Befehl, den mir evtl. Birgitta mitteilt.

Vielen Dank nochmal

Grüße Dschainers

Andreas_Prouza
29-11-22, 16:00
Es gibt SQL Sequenzen die du dafür verenden kannst.
Ansonsten kannst du beim Erstellen bei Tabellen eine IDENTITY Spalte erstellen, wo die ID automatisch vom System generiert wird.

lg Andreas

dschroeder
29-11-22, 16:13
Wenn ich Dschainers richtig verstehe, sucht er ja keine eindeutige ID für eine Tabelle, sondern eine weltweit eindeutige ID.

Fuerchau
29-11-22, 17:29
Laut dem Link der IBM ist das Generieren ja verbessert worden.
Ein Kunde (AS-Mike) von mir verwendet diese Routine auf einer P9 inzwischen für die Web-Kommunikation und doppelte ID's hats bis jetzt nicht gegeben.

B.Hauser
29-11-22, 17:29
... sollte eine Identity Column nicht ausreichen (z.B. weil auf unterschiedlichen Systemen in die "gleiche" Tabelle geschrieben wird und die Tabellen irgendwann wieder zusammengemischt werden)...

Hast Du Dir schon einmal die Funktion GENERATE_UNIQUE() angeschaut
GENERATE_UNIQUE() (https://www.ibm.com/docs/en/i/7.5?topic=functions-generate-unique)
oder den Datentyp ROWID
[URL="https://www.ibm.com/docs/en/i/7.5?topic=types-row-id-values"]ROWID?

Dschainers
30-11-22, 06:39
Vielen Dank für die Antworten.

Ich schau mal was ich da gebrauchen kann.


Dschainers