Ich habe derzeit eine Spalte in einer DB2-Tabelle, die durch Webanrufe und Prozeduren von einem zeichenverschlüsselten Wert übergeben wird. Es ist vom Typ CHARACTER (13) mit einer CSSID zur Verschlüsselung.

Dies ist durch mehrere APIs zu einem großen Problem geworden, sollte uns jedoch ursprünglich eine eindeutige ID für Anrufe ermöglichen, die nicht der Primärschlüssel waren.

Was wäre in DB2-400 das nächstbeste für eine Zeichenfolge mit 13 oder mehr Zeichen, die beim Einfügen eindeutig ist und zufällig erstellt wird, jedoch keine Entschlüsselung erfordert (nur eine einfache Zeichenfolge)?

Gibt es dafür eine allgemein anerkannte Methode? Wir geben keine sicheren Daten weiter, daher ist keine Verschlüsselung erforderlich, sondern wir möchten nur einen zufällig erstellten und eindeutigen Charakter

0
Geoff_S 21 Feb. 2020 im 22:43

3 Antworten

Beste Antwort

Versuchen Sie hex(generate_unique()). Es ist eine eindeutige CHAR(26) Zeichenfolge.
Oder to_char(timestamp(generate_unique()), 'YYYYMMDDHH24MISSFF6'). Sie können auch mit dem Format der Funktion to_char spielen. Es kann nützlich sein, beispielsweise das umgekehrte Format wie FF6SSMIHH24DDMMYYYY zu verwenden, um eindeutige Indexseitenkonflikte bei starker Einfügeaktivität zu vermeiden.

1
Mark Barinstein 22 Feb. 2020 im 19:28

Dies ist ein Kommentar, der nicht in den Kommentarbereich passt.

Ich habe (nicht mehr) Zugriff auf einen DB2-400, aber ich habe den folgenden Code in DB2 10.5 für Linux getestet.

create sequence seq1;

select concat('A', varchar_format(next value for seq1, '000000000000')) as my_id
from sysibm.sysdummy1;

Ergebnis, wenn Sie es 4 Mal hintereinander ausführen:

A0000000000001
A0000000000002
A0000000000003
A0000000000004

Vielleicht gibt es in DB2-400 etwas Äquivalentes.

0
The Impaler 21 Feb. 2020 im 21:16

Klingt so, als würden Sie GENERATE_UNIQUE() verwenden

Die Funktion GENERATE_UNIQUE gibt eine 13 Byte lange Bitdaten-Zeichenfolge zurück (CHAR (13) FOR BIT DATA).

Hat eigentlich nichts mit Verschlüsselung zu tun ...

Und meiner Meinung nach die ideale Lösung, um einen anderen eindeutigen Wert als eine einfache numerische Identität zu generieren. Was ist das Problem, das Sie haben?

0
Charles 21 Feb. 2020 im 23:18