Das Festlegen des Suchpfads ist sehr häufig, wenn Sie eine Datenbank mit genügend Tabellen haben, die in mehrere Schemas aufgeteilt wurden. Der Weg zu verstehen, was es tut und verwendet wird, ist mit der schema Dokumentation zu beginnen, die die Rolle des öffentlichen Schemas auch in Sachen abdeckt.
Die Art und Weise $ Benutzer ersetzt wird, wenn es erscheint in diesem Pfad in der Dokumentation für search_path beschrieben:
„Wenn eine des Listenelementes ist die besonderer Wert $ user, dann das Schema mit Der von zurückgegebene Name SESSION_USER wird ersetzt, wenn ein solches Schema ist.
Offensichtlich ist Ihre nächste Frage dann, was ist SESSION_USER? Dies beginnt als der Benutzername, den Sie mit der Datenbank verbinden, aber kann sich über Befehle wie SET SESSION AUTHORIZATION ändern. Die Idee ist, dass es Ihnen helfen kann, ein Schema für jeden Benutzer einzurichten, was eine nützliche Möglichkeit sein kann, die Sicherheit für jeden Benutzer zu sperren. Ich habe nur davon gehört, dass es in einer einfachen Datenbank verwendet wird, die eine Art Umgebung hostet, in der jeder Benutzer seine eigene Rolle und sein eigenes Schema erhält, aber nicht seine eigene Datenbank. Sie können den "$ user" -Teil wahrscheinlich dort lassen und nichts beeinflussen, er wird standardmäßig angezeigt und die meisten wissen nicht, dass Sie ihn entfernen können, wenn Sie sich nicht darauf verlassen.
$ Benutzer ist in Anführungszeichen, weil das eine reserved word im SQL-Standard ist. Sie können Dinge mit reservierten Wörtern benennen, wenn Sie in PostgreSQL müssen, auch wenn es eine schlechte Idee ist, aber Sie müssen sie ständig in Anführungszeichen setzen, damit der SQL-Parser sie nicht falsch interpretiert. Dies kann Sie mit seltsamen Fehlern verletzen, wenn Sie versuchen, ein reserviertes Wort als den Namen einer Spalte oder Tabelle zu verwenden.Einige könnten Sie versehentlich versuchen, als Spaltennamen zusätzlich zu "Benutzer" zu verwenden, da sie sich auf gängige Dinge aus der Praxis beziehen, darunter case, default, end, full, left, new, offset, order und references.
Vielen Dank für Ihre Antworten! –