![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBO
Generatoren auf tabellenwert setzen
Hallo, gibt es eine Möglichkeit alle Generatoren auf den Tabellenwert zu setzen. Hat jemand einen Lösungsvorschlag?
|
AW: Generatoren auf tabellenwert setzen
Was meinst Du mit Tabellenwert?
|
AW: Generatoren auf tabellenwert setzen
So etwas wie
![]() |
AW: Generatoren auf tabellenwert setzen
vielleicht:
SET GENERATOR generator-name TO <new-value> |
AW: Generatoren auf tabellenwert setzen
oder
Code:
ALTER SEQUENCE <SequenceName> RESTART WITH <NewValue>;
|
AW: Generatoren auf tabellenwert setzen
Für jede zu "verarbeitende" Tabelle / jeden Generator in einem Script eine Zeile dieser Art einbauen:
SQL-Code:
select 'SET GENERATOR GEN_Generatorname TO '||Max(Generatorspalte) + 1||'; commit;' as SQL from tabelle;
Das Ergebnis nehmen und ausführen. Das kann man sicherlich auch in eine Prozedur packen und die dort erstellten SQLs dann per EXECUTE STATEMENT ausführen. Sowas in der (ungetesteten) Art:
SQL-Code:
Aufrufen könnte man das dann mit
CREATE PROCEDURE PR_Generator_Update AS
declare v_SQL VarChar(4000); begin select 'SET GENERATOR GEN_Generatorname_1 TO '||Max(Generatorspalte) + 1 from tabelle_1 into :v_SQL; EXECUTE STATEMENT v_SQL; select 'SET GENERATOR GEN_Generatorname_2 TO '||Max(Generatorspalte) + 1 from tabelle_2 into :v_SQL; EXECUTE STATEMENT v_SQL; ... commit; end^
SQL-Code:
exceute procedure PR_Generator_Update;
Man muss dann halt die Prozedure pflegen und neue Tabellen hinzufügen bzw. alte entfernen. |
AW: Generatoren auf tabellenwert setzen
Danke für die schnellen antworten. Sorry der Tabellenwert ist die Generator ID.
|
AW: Generatoren auf tabellenwert setzen
Hallo,
Zitat:
Was konkret willst du machen. Bitte mal ein kurzes Beispiel. |
AW: Generatoren auf tabellenwert setzen
Meine man kann den Generator nicht mit select from .. auf einen Wert setzen. Hat zumindest bei mir nicht funktioniert, vielleicht habe ich aber auch was falsch gemacht. Auch 'Set generator gen_xy to :p wollte er nicht machen.
Im Programm kann man aber folgendes machen:
Delphi-Quellcode:
In der Art könnte man das auch als STP machen, lohnt den Aufwand aber nicht unbedingt. Es geht natürlich nur jeder Generator einzelnd, wüsste jetzt nicht wie man das anders lösen könnte.
ibcsql.sql.add('set generator gen_xy to '+inttostr(neuwert);
ibcsql.execute; |
AW: Generatoren auf tabellenwert setzen
Zitat:
Code:
select gen_id(g_xyz, (select max(id) from t_xyz) - gen_id(g_xyz, 0)) from rdb$database;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr. |
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