-
Anfänger Frage - Autowert?
Hallo An alle,
ich bin neu im System AS400. Eine Frage hab ich.
Gibt es die Möglichkeit in deiner Tabelle einem Feld die Funktion eines Autowertes zu geben?
Zum Beispiel: die Art einer laufenden Nummer
oder gibt es noch einen anderen Weg?
Grüsse
Alex
-
Einen Autowert wie in MS-Access/SQL-Server gibt es auf der AS/400 nicht.
Man kann sich set neuestem eine Auto-ID (allerdings 40-Stellig) generieren lassen.
Möchte man einen Autowert als einfache Zahl geht dies nur mittels BEFORE-INSERT-Trigger.
Hierzu findest du mehrere Beispiele im Forum.
-
Warum so schrierig,
Jede DB-Datei hat eine relative Satznummer (rrn - relativ record Number), die von der AS/400-Datenbank automatisch vergeben wird, egal ob die Datei geschlüsselt ist oder nicht. Warum verwendest Du nicht diese rrn.
In SQL:
select rrn(a) from lib/table a
In RPG kann man bei Dateidefinition ohne Key direkt auf diese releatve Satznummer zugreifen. Beim sequentiellen Lesen wird diese in spezifischen Dateiinformationsstruktur zurückgeliefert.
-
doch ab V5R2 geht es mit DB2/400 SQL
Zitat von Alex79
Hallo An alle,
ich bin neu im System AS400. Eine Frage hab ich.
Gibt es die Möglichkeit in deiner Tabelle einem Feld die Funktion eines Autowertes zu geben?
Zum Beispiel: die Art einer laufenden Nummer
oder gibt es noch einen anderen Weg?
Grüsse
Alex
doch, es wird nicht nur eine 40-stellige ID geliefert,
dieses Beispiel erzeugt 9-stellige ID's (Integer)
=============================================
folgende Felder in der Tabelle werden erzeugt:
Feld Art Länge
OID INTEGER 9
NAME CHARACTER 40
CREATE TABLE TESTCOLL/TAB4711
(OID integer GENERATED always AS IDENTITY
(START WITH 1 , INCREMENT BY 1) ,
NAME CHAR (40 ) )
;
INSERT INTO TESTCOLL/TAB4711
(NAME) VALUES('TEST_TEST')
;
INSERT INTO TESTCOLL/TAB4711
(NAME) VALUES('TEST2_TEST2')
;
select * from TESTCOLL/TAB4711
;
OID NAME .
1 TEST_TEST
2 TEST2_TEST2
-
Die RRN(*) sollte per SQL nicht verwendet werden, da diese immer einen Tablescan erzwingt.
Ausserdem ändert sich diese bei z.B. einem RGZPFM bzw. durch REUSEDLT(*YES) wird die gleiche RRN wieder verwendet.
Damit bietet RRN nur eine temporäre und keine statische Eindeutigket (z.B. zur Verwendung von ForeignKey's, Constraint).
Similar Threads
-
By stoerfang in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 24-01-13, 10:27
-
By Bratmaxxe in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 24-01-07, 19:17
-
By Freezer in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 23-10-06, 21:02
-
By cbe in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 24-08-06, 17:30
-
By malzusrex in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 23-08-06, 17:12
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks