Wie verwende ich dieselben SQL-Werte in Vorproduktion und Produktion, ohne die Abfrage neu zu schreiben?

Tauschen Sie Limits, Filter und Testdaten zwischen Vorproduktion und Produktion aus, ohne die Abfrage neu zu schreiben. Die Werte liegen im Panel Variablen und folgen der Umgebung des Tabs.

In Vorproduktion braucht dieselbe Abfrage ein kleines LIMIT, eine Test-Id, eine erfundene E-Mail oder einen engeren Filter. In Produktion sind diese Werte andere.

Ohne einen Ort dafür wird die Zahl in jedes Statement kopiert. Wenn der Tab von Vorproduktion nach Produktion wechselt, ändern Sie sie von Hand. Ein natives SQL-Bind ($1, ?) füllt einen Parameter für diesen Lauf. Es merkt sich keinen Wert pro Umgebung und folgt dem Tab nicht.

Kerry Studio behandelt das mit Variablen in SQL: ein Name, gebunden an einen Wert, ein Literal, einen $faker.-Generator oder ein SQL-Fragment. Der Wert liegt im Panel Variablen. Beim Ausführen tauscht Kerry das Token und schickt der Datenbank das bereits aufgelöste SQL. Die Abfrage im Editor bleibt gleich.

Das ist kein natives Bind des Motors. Es ist Ersetzung im Client. Die Datenbank erhält SQL mit dem Wert schon an Ort und Stelle.

So legen Sie die Variable an

Sie brauchen einen offenen Workspace und einen SQL-Tab.

Im Editor

  1. Schreiben Sie :variable in die Abfrage, zum Beispiel :grenze.
  2. Drücken Sie die Leertaste.
  3. Klicken Sie auf das + neben dem Namen.
  4. Das Panel Variablen öffnet sich in dieser Zeile. Geben Sie den Wert und den Typ ein, wenn es kein Text ist.

Im Panel

  1. Öffnen Sie das Panel Variablen: das Symbol in der rechten Seitenleiste, oder die Palette (⌘K / CtrlK) → Variablenpanel öffnen.
  2. Klicken Sie auf Neue Variable.
  3. Geben Sie den Bezeichner ohne den : ein.
  4. Wählen Sie Typ, Geltungsbereich (Lokal oder Global) und die Umgebung, deren Wert Sie bearbeiten (Standard oder eine Umgebung des Projekts).
  5. Füllen Sie den Wert. Im Editor verwenden Sie :variable.

Lokal gilt in einem Workspace. Global gilt in allen.

Ein Wert pro Umgebung

Es gibt zwei Schreibweisen für die Variable.

:variable, zum Beispiel :grenze, verwendet den Wert der Umgebung, auf der der Tab steht. Ist diese Umgebung im Panel leer, kommt der Wert Standard.

:variable:umgebung, zum Beispiel :grenze:production, verwendet den Wert dieser Umgebung, auch wenn der Tab auf einer anderen steht. Der : steht nur zwischen Name und Umgebung.

In Postgres sind zwei Doppelpunkte hintereinander ein Cast: :grenze::text heißt „die Variable grenze, nach text gewandelt“. Das wählt keine Umgebung. Für Produktion verwenden Sie :grenze:production.

Im Panel ist eine Zeile ein Name. Der Umgebungswähler legt keine zweite Variable an. Er wechselt nur, welchen Wert dieser Zeile Sie gerade bearbeiten.

Wenn grenze in Vorproduktion 50 und in Produktion 500 ist:

Im SQLTab aufDie Datenbank erhält
:grenzeVorproduktion50
:grenze:productionVorproduktion500
sql
SELECT id, total
FROM bestellungen
WHERE total >= :grenze
ORDER BY total DESC;

Wenn Sie den Wert im Panel ändern, bleibt die Abfrage gleich. Wechselt der Tab von Vorproduktion nach Produktion und das SQL verwendet :grenze ohne gesperrte Umgebung, erhält die Datenbank 500 statt 50.

Text, Zahl oder ein SQL-Fragment

TypWas die Datenbank erhält
Text, Zahl, Boolean, NullPassendes Literal
SQLFragment in der Abfrage ohne Anführungszeichen

Der Typ SQL speichert ein WHERE, ein JOIN oder einen Ausdruck und setzt ihn ohne Anführungszeichen in das Statement. Wenn mehrere Abfragen dasselbe Aktiv-Kriterium teilen:

:filter_aktiv (SQL) = status = 'active'

sql
SELECT *
FROM bestellungen
WHERE :filter_aktiv;

Testdaten mit $faker. erzeugen

$faker. im Wert der Variable erzeugt bei jedem Lauf einen neuen Wert. Eine Test-E-Mail zum Beispiel:

:test_email (Text) = $faker.internet.email

sql
INSERT INTO kunden (email)
VALUES (:test_email);

$faker. funktioniert auch direkt im SQL ($faker.person.fullName). An der Variable bleibt derselbe Generator wiederverwendbar. Kommentare und Zeichenketten im SQL werden nicht als Variable behandelt.