Ich stieß vor kurzem auf eine Kuriosität. Gilt folgendes SQL:Was bewirkt der output_expression für "DELETE FROM table"?
DELETE FROM customer *;
Die Dokumentation für PostgreSQL DELETE sagt der Stern ist ein möglicher Wert für den output_expression
:
Ein Ausdruck nach durch die DELETE-Befehl berechnet und zurückgeführt werden jede Reihe ist gelöscht. Der Ausdruck kann beliebige Spaltennamen der Tabelle oder Tabelle (n) verwenden, die in USING aufgelistet sind. Schreiben Sie *, um alle Spalten zurückzugeben.
Ich versuchte es mit und ohne den Stern und kann keinen Unterschied sehen. In der Tat kann ich einfach alles nach dem Tabellennamen eingeben und es wird akzeptiert. Es muss nicht einmal ein tatsächlicher Spaltenname sein. Es wird nichts extra zurückgegeben.
db=> DELETE FROM customer wheeeeeee;
DELETE 19
Also was macht es und wofür könnte ich es verwenden?
Frage also posted on the PostgreSQL mailing list.
Warum nicht versuchen und herausfinden? –
tat ich. Es löscht nur die Zeilen und gibt nichts Besonderes zurück. –
Sieht so aus, als hättest du 'RETURNING' verpasst, was ein nicht-optionaler Teil der Grammatik ist, die dem' output_expression' vorangeht. Ich nehme an, dass '* 'ohne Alias (wie für' weeeeeeee') behandelt wird. –