Betrachten wir das folgende Beispiel (vom Beginn eines psql-Skripts an):
\c :db_to_run_on
TRUNCATE the_most_important_table;
-- tried to avoid similarities to anything that exists out there
Nun, wenn es vom Befehl ausgeführt wird
psql [connection details] -v db_to_run_on=\'dev_database\'
dann läuft es einfach und der Benutzer ist glücklich. Aber was ist, wenn er sich entscheidet zu spezifizieren -v db_to_run_on=production_database
? (Nehmen wir an, dass dies passieren kann, genau wie die Leute rm -rf / # don't try this at home!!!
gelegentlich laufen .) Hoffentlich gibt es eine neue Sicherung dieser Tabelle ...
Es stellt sich also die Frage: Wie können die an ein Skript übergebenen Variablen überprüft und die weitere Verarbeitung basierend auf ihrem Wert gestoppt werden?
\set ON_ERROR_STOP on
- nett!