Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird Primärschlüssel Format ändern (https://www.delphipraxis.net/126580-firebird-primaerschluessel-format-aendern.html)

Gandimann 28. Dez 2008 20:05

Datenbank: Firebird • Version: 2.1 • Zugriff über: Anydac LocalHost

Firebird Primärschlüssel Format ändern
 
Hi Friends,
könnt Ihr bitte mir erklären wie ich mein Prämärschlüssel in bestimmten Format haben kann statt ein laufenden Nummer.
Info:
Datenbank = Firebird v.2.1

Trigger used :

---> before Inser / Update

begin
if ( (new.PAX_ID is null) or (new.PAX_ID = 0) )
then new.PAX_ID = gen_id(GEN_ADRESS_ID, 1);
end

es generiert läfendenumer im PAX_ID ich möchte aber so haben :

20090101-001
(YYYYMMDD-läufendnummer)<--------Zusamenstellung der o.g. Format. Y = Year, M = Monat = Day)sollen natürlich auch aktuell sein.

Feldformat der PAX_ID ist :Nummerisch

Natürlich als AutoInc !!

Thanx and guten Rutsch...

mkinzler 28. Dez 2008 20:33

Re: Firebird Primärschlüssel Format ändern
 
Wird der PK schon vom einer anderen Tabelle referenziert?

Gandimann 28. Dez 2008 20:35

Re: Firebird Primärschlüssel Format ändern
 
Nein !

mkinzler 28. Dez 2008 20:37

Re: Firebird Primärschlüssel Format ändern
 
Dann sollte eine Updatestatement die Tabelle durchändern können

Gandimann 28. Dez 2008 20:42

Re: Firebird Primärschlüssel Format ändern
 
Wie ändre ich dass?........(bin ein newbie)

Gandimann 28. Dez 2008 20:46

Re: Firebird Primärschlüssel Format ändern
 
Geht es So etwa ???


UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value


geht es nicht per Generator Format ????

mkinzler 28. Dez 2008 20:59

Re: Firebird Primärschlüssel Format ändern
 
Du musst ja nur einen Wert Ändern, allerdings würde ich wegen dem abweichenden Format zuerst die Tabelle um eine weitere Spalte erweitern, diese setzen
SQL-Code:
update <tabelle> set ID = extract( year from current_Date) || extract(month from current_date) || extract( day from current_date) ||'-' || pax_id;
dann constraint droppen und neuen auf neue Spalte setzen. dann kann die alte PK-Spalte entfernt werden


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 Uhr.

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