- Funktionalität mit Exclusion-Constraints verfügbar
- Ohne Schlüsselwort
for:PERIODFORBUSINESS_TIME (…) - 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.
Siehe Auch
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.

