SQL Select auf nicht existierende Spalten ohne Fehler möglich?

darktrym

Fahnenträger
Hallo allerseits,
ist es möglich ein Select so zu formen dass wenn ich dieses verwende und die Spalten gerade nicht existieren(Recovery alten DB-Stand), das die nicht vorhandenen Felder mit Default-Werten belegt werden und kein Fehler geworfen wird?
 
Sowas wie SELECT t.col1, t.col2, 'col3 default' AS col3 FROM tabl AS t ?

Je nach Datenbank ggf. leicht anders formatiert.
 
Nein. Es existiert eine Tabelle SPECIAL mit Feld id1, id2 und eine Tabelle mit nur id1 in einem anderen Datenbankstand.
Dann soll select id1, id2 from table SPECIAL akzeptiert werden auch wenn id2 nicht existiert und einen Wert zurückgeben.
 
Tabelle umbenennen und eine View anlegen die Special heißt und das dann wie bei mir genannt ausfüllt? Ansonsten musst du schauen ob deine Datenbank Query Rewriting erlaubt (was intern nichts anderes macht als aus der Tabelle eine View zu machen).
 
Das ganze muss auf SQL-Klausel Ebene geschehen weil die Datenbank produktionsrelevant ist. Und die alte Software muss auch noch funktionieren.
Der einfachste Weg wäre eine Skalarfunktion zu schreiben um die Felder abzusichern. Aber sollte jemand auf die wahnsinnige Idee kommen die DB dann auch noch wechseln zu wollen, habe ich ein Problem. Und alle SQL-Klauseln umzuschreiben wird den Durchsatz massiv beeinträchtigen. Bliebe dann noch ein Fallback einzubauen um bei Nichtvorhandensein der Funktion clientseitig das zu fixen. Ich hatte gehofft es gibt eine Funktion im SQL Standard(Oracle DB), die das für mich übernehmen könnte.
 
Zurück
Oben