![]() |
Datenbank: Firebird • Version: 1.5.2 • Zugriff über: Zeos 6.5.1
[SQL] Feststellen, ob Feld existiert
Hallo,
in ![]() Ich füge neue Felder über SQL-Skripte hinzu und wollte deshalb die Prüfung, ob ein Feld bereits existiert, in das SQL-Skript auslagern. Weiß jemand, wie man mit SQL feststellt, ob ein Feld existiert? Gruß Frank |
Re: [SQL] Feststellen, ob Feld existiert
Ist einfach mit Hilfe der SYSTEM-Tabellen lösbar:
SQL-Code:
Lefert alle Felder einet Tabelle
select RDB$FIELD_NAME from RDB$RELATION_FIELDS where RDB$RELATION_NAME = <Tabellenname>;
|
Re: [SQL] Feststellen, ob Feld existiert
Super, danke ! :thumb:
|
Re: [SQL] Feststellen, ob Feld existiert
Hmm,
schön und gut, dann erhalte ich eine Liste, die ich wieder durchsuchen muss. Gibt es keinen direkteren Weg? Mit
SQL-Code:
kann ich feststellen, ob eine bestimmte Tabelle existiert und erhalte eine Integerwert der entweder 0 oder 1 enthält.
SQL.Text := 'SELECT COUNT (*) AS RECCOUNT FROM RDB$RELATIONS R ' +
'WHERE R.RDB$RELATION_NAME = ' + QuotedStr(strTable); Sowas suche ich für ein einzelnes Feld in einer Tabelle. Gruß Frank |
Re: [SQL] Feststellen, ob Feld existiert
Na dann mach halt einfach noch eine AND-Bedingung hinten dran!
SQL-Code:
select count(*) from RDB$RELATION_FIELDS
where RDB$RELATION_NAME = <Tabellenname> and RDB$FIELD_NAME = <Feldname>; |
Re: [SQL] Feststellen, ob Feld existiert
oder das Alter-Skript erweitern in z.B.
SQL-Code:
Alter table <tabellenname>' add ... where not exists (select RDB$FIELD_NAME from RDB$RELATION_FIELDS
where RDB$RELATION_NAME = <Tabellenname> and RDB$FIELD_NAME = <Feldname>); |
Re: [SQL] Feststellen, ob Feld existiert
Hallo,
funktioniert leider nicht mit
SQL-Code:
Die Fehlermeldung lautet: "Column does not belong to referenced table".
SQL.Text := 'select count(*) from RDB$RELATION_FIELDS ' +
'WHERE (R.RDB$RELATION_NAME = ' + QuotedStr(strTable) + ') AND (R.RDB$FIELDNAME = ' + QuotedStr(strField) + ')'; Gruß Frank |
Re: [SQL] Feststellen, ob Feld existiert
Zitat:
|
Re: [SQL] Feststellen, ob Feld existiert
So,
habs auch mit dem Vorschlag von mkinzler ausprobiert, allerdings scheint Firebird das where nicht so recht zu mögen. Bei Ausführen von
SQL-Code:
kommt die Fehlermeldung "Invalid token: where" :roll: .
ALTER TABLE TBLIPMAIN
ADD INTSCANID INTEGER where not exists (select RDB$FIELD_NAME from RDB$RELATION_FIELDS where RDB$RELATION_NAME = TBLIPMAIN and RDB$FIELD_NAME = INTSCANID); Gruß Frank |
Re: [SQL] Feststellen, ob Feld existiert
Hallo,
Zitat:
Stimmt, danke für den Hinweis, kommt aber die gleiche Fehlermeldung ("Column does not belong to referenced table"). Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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