Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird und AutoInc (https://www.delphipraxis.net/154928-firebird-und-autoinc.html)

sx2008 2. Okt 2010 16:24

AW: Firebird und AutoInc
 
Back to the basics...
Ein Feld kann das Attribut NULL oder NOT NULL haben.
Ein Primärschlüsselfeld hat in aller Regel das Attribut NOT NULL.
Bei einem AutoInc-Feld wird die Sache etwas komplizierter.
Es hat das Attribut NOT NULL, darf aber nicht von der Anwendung befüllt werden
(Attribut "DON'T FILL")
Es wird ja von der Datenbank gefüllt und darf deshalb nicht in der INSERT oder
UPDATE-Anweisung angesprochen werden.
Man muss also daür sorgen (eigentlich sollte das die VCL tun), dass das Property "Required"
der Felds = False ist.

AutoInc-Felder sind bequem und smart, aber nur solange man den Wert beim Einfügen
eines Datensatzes nicht benötigt.
Hat man abhängige Tabellen, dann ist es besser auf AutoInc-Felder zu verzichten
und einen Generator oder künstlich erzeugte Schlüssel zu benützen.

Grolle 2. Okt 2010 16:49

AW: Firebird und AutoInc
 
Hi,

danke für deinen Post. Habe jetzt mal das beforeInsert genutzt:
Delphi-Quellcode:
procedure Tdata.QueryBeforeInsert(DataSet: TDataSet);
begin
  Query.FieldByName('id').Required := false;
end;
Das scheint vorerst zu klappen. Nicht schön, aber zweckmäßig :stupid:

Viele Grüße ...

tsteinmaurer 2. Okt 2010 19:08

AW: Firebird und AutoInc
 
http://www.devart.com/forums/viewtop...63775a1f0427d5

lg,
Thomas

scrat1979 2. Okt 2010 21:36

AW: Firebird und AutoInc
 
Zitat:

Zitat von DeddyH (Beitrag 1053354)
Nein nein, der PK macht ja Sinn. Normalerweise sollte doch bei einem INSERT PK dieser dann automatisch befüllt werden.

Der Meinung bin ich auch und bei mir funktioniert es. Ich habe übrigens das "AutoInc" Feld mit SQL-Manger (EMS Software glaube ich...) angelegt. Bei meinem INSERT-Statement ist das PK-Feld auch nicht vorhanden, da es ja - wie DeddyH schon sagt - VOR dem Insert automatisch befüllt wird. Es funktioniert OHNE Fehler. Komisch, sehr komisch... Lege doch mal einen Datensatz mit einer GUI an und lassen das PK-Feld leer. Bei einem POST - bzw. nach dem COMMIT - sollte dort eine Zahl stehen und kein Fehler auftauchen. BTW, commitest Du auch nach Deinem Post???????????????

mkinzler 2. Okt 2010 21:47

AW: Firebird und AutoInc
 
Am Besten den Trigger so anlegen, dass immer ein Wert gesetzt wird, auch wenn ein Wert ( wie Z.B. '') übergeben wird

DeddyH 3. Okt 2010 13:37

AW: Firebird und AutoInc
 
Ja eben, deshalb hatte ich ja vorgeschlagen, die If-Abfrage ganz aus dem Trigger zu löschen.

mkinzler 3. Okt 2010 13:47

AW: Firebird und AutoInc
 
Oder zu erweitern ( möglicherweise werden ja sinnvolle Werte übergeben)

DeddyH 3. Okt 2010 13:53

AW: Firebird und AutoInc
 
Mach ich nie, da ich der Meinung bin, dass die DB und nur die DB künstliche Schlüssel zu vergeben hat. Aber das ist vermutlich Ansichtssache.

mkinzler 3. Okt 2010 14:01

AW: Firebird und AutoInc
 
Ich auch. Da gibt es aber unterschiedliche Ansichten


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz