Without Overlaps-Constraints


BigQueryDb2 (LUW)DuckDBH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite200920112013201520172019202120232025⊘ 3.5.7 - 3.51.0⊘ 2008R2 - 2025✓ 18+c⊘ 9.2 - 12a⊘ 8.3 - 9.1⊘ 11gR1 - 23.26.0⊘ 5.0 - 9.5.0✓ 10.5 - 12.1.2⊘ 5.1 - 10.4⊘ 1.4.191 - 2.4.240⊘ 1.4.0✓ 10.5 - 12.1.2b⊘ 9.7⊘ 2.0
  1. Funktionalität mit Exclusion-Constraints verfügbar
  2. Ohne Schlüsselwort for: PERIOD FOR BUSINESS_TIME (…)
  3. Mit Range-Type: BUSINESS_TIME tsrange GENERATED ALWAYS AS (tsrange(start_ts, end_ts)) STORED

SQL kennt temporale Constraints, die überlappende Zeitbereiche ausschließen. Damit kann man zum Beispiel Doppelbuchungen in Reservierungssysteme unterbinden.

Dafür nutzt man im Constraint – Primary Key oder Unique – die Periode, die die Anfangs- und Endzeiten kombiniert0, mit den Schlüsselworten without overlaps.

CREATE TABLE t (
  id INTEGER NOT NULL,
  
  start_ts TIMESTAMP(6) NOT NULL,
  end_ts   TIMESTAMP(6) NOT NULL,
  PERIOD FOR BUSINESS_TIME (start_ts, end_ts),

  PRIMARY KEY (id, BUSINESS_TIME WITHOUT OVERLAPS)
)

Bei der Ausführung der folgenden Insert-Anweisungen offenbart sich die Funktion.

INSERT INTO t (id, start_ts, end_ts)
VALUES (1, TIMESTAMP'2018-05-16 19:12:50', TIMESTAMP'9999-12-31 23:59:59')
INSERT INTO t (id, start_ts, end_ts)
VALUES (1,  TIMESTAMP'2019-05-16 19:11:50', TIMESTAMP'2019-05-16 19:12:50')

Da der Zeitbereich der zweiten Insert-Anweisung in jenen der ersten fällt, wird die zweite Insert-Anweisung abgelehnt.

  • Standard-Funktionen

    • T180, “System-versioned tables”

    • T181, “Application-time period tables”

    • T200, “Trigger DDL”

    • F521, “Assertions”

    • F671, “Subqueries in CHECK constraints”,

Normative Referenzen

Without Overlaps-Constraints sind in ISO/IEC 9075-2:2023 als Teil der optionalen Funktion T181, “Application-time period tables” definiert.

20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS, um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Fußnoten

  1. Geschlossen/Offen bzw. Inklusive/Exklusive.

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf TwitterMarkus Winand auf Bluesky
Copyright 2015-2025 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO