Keine Sonn und Feiertage

sodala, um das ganze fortzuführen, weil ich bisher alle fixen (!) Feiertage nicht eintragbar gemacht habe: (Ja, sind die Feiertage in Österreich)

Code:
create table vermietungen (datum date);
create function wochentag_datum (x date) RETURNS double precision AS 'select extract(dow from x)' LANGUAGE sql VOLATILE;
alter table vermietungen add constraint keine_Sonntage CHECK (wochentag_datum(datum)>0);
alter table vermietungen add constraint Neujahr CHECK (to_char(datum, 'DD.MM.') != '01.01.');
alter table vermietungen add constraint Heilige_drei_Könige CHECK (to_char(datum, 'DD.MM.') != '06.01.');
alter table vermietungen add constraint Josef CHECK (to_char(datum, 'DD.MM.') != '19.03.');
alter table vermietungen add constraint Staatsfeiertag CHECK (to_char(datum, 'DD.MM.') != '01.05.');
alter table vermietungen add constraint Florian CHECK (to_char(datum, 'DD.MM.') != '04.05.');
alter table vermietungen add constraint Mariä_Himmelfahrt CHECK (to_char(datum, 'DD.MM.') != '15.08.');
alter table vermietungen add constraint Rupert CHECK (to_char(datum, 'DD.MM.') != '24.09.');
alter table vermietungen add constraint Tag_der_Volksabstimmung CHECK (to_char(datum, 'DD.MM.') != '10.10.');
alter table vermietungen add constraint Nationalfeiertag CHECK (to_char(datum, 'DD.MM.') != '26.10.');
alter table vermietungen add constraint Allerheiligen CHECK (to_char(datum, 'DD.MM.') != '01.11.');
alter table vermietungen add constraint Martin CHECK (to_char(datum, 'DD.MM.') != '11.11.');
alter table vermietungen add constraint Leopold CHECK (to_char(datum, 'DD.MM.') != '15.11.');
alter table vermietungen add constraint Mariä_Empfägnis CHECK (to_char(datum, 'DD.MM.') != '08.12.');
alter table vermietungen add constraint Heiliger_Abend CHECK (to_char(datum, 'DD.MM.') != '24.12.');
alter table vermietungen add constraint Christtag CHECK (to_char(datum, 'DD.MM.') != '25.12.');
alter table vermietungen add constraint Stefanitag CHECK (to_char(datum, 'DD.MM.') != '26.12.');
alter table vermietungen add constraint Silvester CHECK (to_char(datum, 'DD.MM.') != '31.12.');

Jetzt kommt der Spaß mit Ostern :D (Außer, irgendwer fechtet diese Lösungsmethode an, aber falls, dann bitte Verbesserungsvorschläge bringen ;))
 
Werbung:
Es klappt eh nicht so ganz, beim probieren, weil irgendwo eine falsche Column steht, und ja, ich denke, wir werden nicht wirklich so bald international beschäftigt sein. (Der Code oben funktioniert, gerade mal probiert mittels copy paste, also wohl durch schreiberei irgendeinen Fehler gemacht)

Aber danke soweit ersteinmal ;)
Falls wir irgendwann noch eine 2. Stube eröffnen, und die rein zufällig nicht in Österreich, werde ich mich mit den internationalen Feiertagen (also, von anderen Ländern und so) beschäftigen ;)

EDIT: Ich glaube, wir werden auch nicht so bald in einem anderen Bundesland eine solche Stube eröffnen, weil ich glaube es gibt auch in den diversen Bundesländern verschiedene Feiertage.
 
Da kann man sich trefflich streiten. Ich sehe in unserer Kundschaft da auch 2 Hauptlager: zum einen die, die die DB einfach nur als Datenhalde nutzen und alle Logik außerhalb machen - um z.B. auch mal die DB schnell wechseln zu können. Und, als Beispiel (ist NICHT unser Kunde, aber es gibt von denen sehr viele öffentliche Slides zum Thema) Zalando, die große Teile ihrer Applikation innerhalb von PostgreSQL abwickeln.

Der Fragesteller ist, soweit mir bekannt, nicht in der Position, diese Anwendung für einen international tätigen Großkonzern zu schreiben, sondern 'er will nur spielen' mit den Möglichkeiten, die PG bietet. Insofern ist das, aus meiner Sicht, so in Ordnung.
 
Der Fragesteller ist, soweit mir bekannt, nicht in der Position, diese Anwendung für einen international tätigen Großkonzern zu schreiben, sondern 'er will nur spielen' mit den Möglichkeiten, die PG bietet. Insofern ist das, aus meiner Sicht, so in Ordnung.

Einerseits vollkommen korrekt, andererseits sollte das schon eine ordentliche Datenbank werden, wenn sie mal online kommt, oder so :D
Schwester meldet sich bereits an, dass sie das Cafe mal übernehmen wird, und ich weiß, dass eine Datenbank immer ein langfristiges Projekt ist, insbesondere, wenn man eine neue Programmiersprache kennenlernen darf ;)
 
Werbung:
Da kann man sich trefflich streiten.
Eigentlich nicht. Ich sage nicht, dass man seine Geschäftslogig nicht innerhalb der Datenbank als Java, PLSQL etc. ablegen soll - das ist erstmal eine Architekturentscheidung.
Sie gehört aber nicht ins DDL mit verwurschtet (oder in einen Trigger gepackt), sondern in die Persistenceschicht. Eine Eigenheit von Geschäftslogik ist es nämlich, dass es im Laufe der Zeit immer Ausnahmen von Ausnahmen der Sonderkonstellation geben wird, die einen normalen Constraint schnell mal an seine Grenzen bringen.

Constraints müssen in erster Linie die grundlegende Integrität der Daten sicherstellen. Ausnahmen bestätigen wie immer die Regel, zu der sie aber nicht werden müssen ;-)
 
Zurück
Oben