finde ich eine sehr einfache UNION-Abfrage, um gebaut habe den ‚Typen‘ einen UUID ging in meine Frage, wie so zu bestimmen:Kurzschluss UNION-Abfrage, wenn erstes Ergebnis
(
SELECT
CASE WHEN id IS NOT NULL THEN 'player_id' ELSE '' END AS uuid_type
FROM db.players
WHERE id = $1
)
UNION
(
SELECT
CASE WHEN id IS NOT NULL THEN 'game_id' ELSE '' END AS uuid_type
FROM db.games
WHERE id = $1
)
UNION
(
SELECT
CASE WHEN id IS NOT NULL THEN 'location_id' ELSE '' END AS uuid_type
FROM db.locations
WHERE id = $1
)
UNION
(
SELECT
CASE WHEN id IS NOT NULL THEN 'promo_id' ELSE '' END AS uuid_type
FROM db.promos
WHERE id = $1
)
Gibt es eine Möglichkeit Diese Abfrage "kurzschließen", so dass sie stoppt, wenn ein Ergebnis gefunden wird. Beispiel: Wenn die erste Unterabfrage erfolgreich ist und uuid_type
auf player_id
festgelegt ist, möchte ich, dass die Abfrage beendet wird, da das Überprüfen der anderen drei Tabellen jetzt nicht mehr erforderlich ist.
Ich denke, Sie können einen 'case' Ausdruck verwenden, um dies zu tun. –
Nach meiner Erfahrung ist es besser, wenn Bezeichner einen Namespace enthalten; zum Beispiel könnten Sie 'player: c495a50a-b74c-11e6-80f5-76304dec7eb7' anstelle von' c495a50a-b74c-11e6-80f5-76304dec7eb7' haben. Wir betrachten Namespaces häufig nur als einen Weg, Namespace-Kollisionen zu verhindern (die Sie bereits durch die Verwendung von UUIDs verhindern), aber in der Praxis habe ich festgestellt, dass es oft sehr hilfreich für Ingenieure (Entwickler, QA, Support usw.) ist in der Lage sein, den Typ eines Bezeichners zu identifizieren, indem man ihn prüft, Protokolle untersucht, Probleme untersucht, usw. * [fortgesetzt] * – ruakh
* [fortgesetzt] * Dies erleichtert Ihnen auch das Leben, wenn Sie einen Datentyp hinzufügen möchten das wird in einem anderen System gemeistert; Zum Beispiel möchten Sie vielleicht, dass die Abrechnung von einem separaten Microservice abgewickelt wird, der nicht mit dem Gameplay übereinstimmt. In diesem Fall möchten Sie wissen, welchen Microservice Sie anrufen müssen, um nach einer bestimmten Kennung zu suchen. – ruakh