-
Wenn du die Spalte weg lässt und nicht mit DEFAULT angibst, schreibt die DB NULL (oder versucht es zumindest). Deshalb muss bei einem Insert auch immer die Spalte mit DEFAULT angegeben werden.
Ich hab mich früher mal mit diesem Thema beschäftigt und bin zum Schluss gekommen:
*) Entweder lässt man die Nr. IMMER vom System generieren (dann braucht man die Spalte auch nicht mit DEFAULT angeben). Dafür muss nur ein entsprechender Parameter beim CREATE/ALTER TABLE angegeben werden
*) Oder die Anwendung schreibt die Nr.
Eine Mischung von Beiden geht auf dauer nicht gut!
-
Nun ja, doch ein wenig inkonsistent.
Entweder ich habe ein automatisches Feld, dann muss ich es weglassen oder ich habe keins.
Diese "Halbautomatic", nur mit "Default" gibts einen Wert, ohne wirds NULL, kann man ja kaum einem erklären.
-
Das mit Angabe von DEFAULT und ansonsten wird NULL reingeschrieben ist nicht richtig!!
Wenn Id weggelassen wird, wird ein Wert erstellt, ansonsten würde SQL0801 nicht hochkommen.
Die Mischung zwischen selbstgeneriert und automatisch generiert ist notwendig, weil eine alte Tabelle abgelöst wird, bei der die alten IDs noch bekannt sind und in alten Programmen benutzt werden. Bei neueren Sätzen ist die Id für den Endbenutzer nicht mehr wichtig.
-
... Works as designed!
Primary und Unique Key Constraints und Unique Indices/logische Dateien, sorgen lediglich dafür, dass kein doppelter Satz erzeugt wird, in dem beim Schreiben eine entsprechende Abbruchmeldung ausgegeben wird.
Der Grund für dieses Verhalten liegt darin, dass für die Ids einfach die nächsten Nummern bereitgestellt werden, aus Performance-Gründen jedoch nicht geprüft wird, ob ein Satz mit der entsprechenden Id bereits vorhanden ist. Dies erfolgt erst beim Schreiben.
Warum setzt Du nicht einfach den aktuellen Wert der Id höher als der Maximal-Wert, der von der alten Datei kommen kann?
Code:
Alter Table YourSchema/YourTable
Alter Column YourId Restart With 100000;
Birgitta
-
Die neue Datei wird in der alten Anwendung noch benutzt und hier ist der Schlüssel 3stellig, wobei 999 schon belegt wurde.
Werde mir was anderes überlegen...
Vielen Dank!
Similar Threads
-
By n_sman in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 09-07-12, 14:30
-
By oulbrich in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 12-01-12, 12:58
-
By deni87991 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 04-08-06, 10:32
-
By woki in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-04-04, 12:09
-
By holly in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 08-04-04, 10:27
Tags for this Thread
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