Einzelnen Beitrag anzeigen

Alphacodex

Registriert seit: 16. Mär 2006
65 Beiträge
 
Delphi 2006 Professional
 
#1

Automatische ID-Generierung... wie macht ihr das?

  Alt 17. Aug 2009, 19:01
Datenbank: Firebird • Version: 2.5 • Zugriff über: Interbase
Hallo,

ich hab noch eine Grundsatzfrage an Euch:

Es macht ja Sinn, dass jeder Record in jeder Datenbanktabelle eine fortlaufende, unique ID hat, anhand dessen man den Record eindeutig wiederfindet. Es würde meiner Ansicht nach auch Sinn machen, wenn diese IDs von der Datenbank selbst verwaltet werden und ich nicht von Delphi aus sicherstellen muss eine eindeutige ID zu finden.

Ich habe per Google folgenden Tipp gefunden, bei dem ich einen Trigger definiere sobald jemand versucht einen neuen Record ohne ID anzulegen:
SQL-Code:
CREATE OR ALTER trigger stunden_bi for stunden
active before insert or update position 0
as
begin
  if (new.kontaktid is null) then
    new.kontaktid = gen_id(gen_stunden_id,1);
end
So, jetzt müsste ich von Delphi aus einen Record ohne diese ID schicken, damit er sie automatisch anlegt (gen_id ist übrigens ein Generator, der fortlaufende Nummern vergibt). Also z.B. irgendwie sowas
insert into stunden (KUNDE, FAHRTZEIT) values (:KUNDE, :FAHRTZEIT) und weil ich ihm ja keine KONTAKTID gebe, sollte der Trigger anspringen und diese erzeugen...

Leider funktioniert das Ganz nicht. Er meckert immer dass ich gegen den UNIQUE OR PRIMARY KEY CONSTRAINT verstoße (weil ich versuche einen Record ohne diese ID anzulegen).

Bin ich mit der Methode völlig auf dem Holzweg, oder wie macht ihr das?


Vielen Dank
Codex
  Mit Zitat antworten Zitat