Spaltenname anzeigen mit information_schema.table_constraints

KauzigerEremit

Neuer Benutzer
Beiträge
2
Hallo

Mit einer SQL Abfrage möchte ich mir alle Spalten anzeigen lassen, die als UNIQUE Schlüssel definiert sind.
Tabellenname, Schlüsselname und Spaltenname sollen dabei angezeigt werden.
Ich kann mit der SQL Abfrage: SELECT * FROM information_schema.table_constraints WHERE TABLE_NAME = '$tableTwo[0]' AND CONSTRAINT_TYPE = 'UNIQUE';
keinen Spaltennamen anzeigen lassen.
$row['COLUMN_NAME'] wird dabei immer als Fehler: COLUMN_NAME is undefined array key, angezeigt.
Ich glaube das der Spaltenname nur mit information_schema.column anzeigbar ist. Aber mit dem Column Schema funktioniert der CONSTRAINT_TYPE nicht mehr.
Der CONSTRAINT_TYPE ist aber wichtig, da dabei der UNIQUE Typ eindeutig festgestellt werden kann, auch wenn der Schlüsselname nicht UNIQUE ist.
Wenn jemand eine Idee hat, wie ich mir auch den Spaltennamen anzeigen lassen kann von der Unique Spalte, würde mir das weiterhelfen.
Vielen Dank für die Bemühungen im voraus.
 
Werbung:
Deine Tabelle heißt tatsächlich '$tableTwo[0]' ? Warum tut man sich sowas an?

Code:
postgres=# create table "$tableTwo[0]" (i int unique);
CREATE TABLE
postgres=# SELECT * FROM information_schema.table_constraints WHERE TABLE_NAME = '$tableTwo[0]' AND CONSTRAINT_TYPE = 'UNIQUE';
 constraint_catalog | constraint_schema |  constraint_name   | table_catalog | table_schema |  table_name  | constraint_type | is_deferrable | initially_deferred | enforced | nulls_distinct 
--------------------+-------------------+--------------------+---------------+--------------+--------------+-----------------+---------------+--------------------+----------+----------------
 postgres           | public            | $tableTwo[0]_i_key | postgres      | public       | $tableTwo[0] | UNIQUE          | NO            | NO                 | YES      | YES
(1 row)
 
Also der vermeintliche Tabellenname ist eigentlich ein PHP Array in dem schon alle Tabellennamen vorhanden sind.
@akretschmer
Inzwischen habe ich eine Alternative gefunden mit der ich leben kann.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$tableTwo[0]' AND COLUMN_KEY = 'UNI';

COLUMN_KEY = 'UNI' macht eigentlich dasselbe wie CONSTRAINT_TYPE = 'UNIQUE'
Trotzdem danke für Deine Bemühungen.

@BerndB
Lass Dich nicht von dem PHP Array verwirren
das steht hier: while ($tableTwo = mysqli_fetch_array($showtables2))
und die SELECT Anweisung steht in der while Schleife
 
Werbung:
Zurück
Oben