Thema: Delphi Primarykey, wie vergeben

Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: Primarykey, wie vergeben

  Alt 18. Sep 2006, 08:05
Hallo,

das Set Term in der ersten Zeile setzt den Terminator vojn ; auf ^
In der vorletzten Zeile wird dann das Scriot abgeschlossen
durch eben diesen Terminator.
Notwendigi ist es, weil das Script aus mehreren Zeilen besteht,
und intern das Semikolon schon als Befehlstrenner benutzt wird.

Über ibexpert kannst du die Trigger übrigens auch ohne das Set Term
erzeugen / bearbeiten.

Noch eine Sache zu prim. key + TTable.
Spätestens wenn du die ID deines neuen Datensatzes sofort nach dem Append
brauchst, hast du ein Problem.
Aus diesem Grund hole ich mir den jeweils neuen prim. key eines Datensatz vor
dem Eintragen selber.

SQL-Code:
CREATE PROCEDURE BILL_COSTCENTER_NEWID
RETURNS (
    NEWID INTEGER)
AS
begin
  newid=gen_id(Gen_Bill_CostCenter,1);
end
BILL_COSTCENTER_NEWID ist ein Generator (Sequenz)

Die Stored Procedure rufe ich auf und schon habe ich meinen neuen Wert.

SQL-Code:
function Table_GetNewId__DB(const theDataBaseName, theTableName: String;
  var theNewId: Longint; var theErrorStr: String): Boolean;
var
  SP: TStoredProc;
begin
  Result:= False;

  theNewId:= -1;
  theErrorStr:= '';

  try
    SP:= TStoredProc.Create(NIL);
    try
      SP.DataBaseName:= theDataBaseName;
      SP.StoredProcName:= UpperCase(theTableName)+'_NEWID';
      SP.ExecProc;

      theNewId:= StrToInt(SP.Params[0].AsString);

      Result:= True;
    finally
      SP.Free;
    end;
  except
    on E: Exception do
    begin
      theErrorStr:= E.message;
    end;
  end;
end; { Table_GetNewId__DB }
Die Methode ght übrigens davon aus, das die Generatoren für die Tabellen immer
im Format
TableName + '_NewId' vorliegen.

Heiko
Heiko
  Mit Zitat antworten Zitat