Ich würde gerne wissen, was ich falsch mache,eine Einschränkung für SYSDATE minus ein Geburtsdatum
Ich möchte eine CHECK-Einschränkung in Oracle hinzufügen, um sicherzustellen, dass ein Benutzer über 18
Also habe ich
ALTER TABLE User
ADD CONSTRAINT check_age CHECK(TO_CHAR(SYSDATE, 'yyyy/mm/dd')- TO_CHAR(dateOfBirth, 'yyyy/mm/dd')> 18)
Aber Im Empfangsfehler
Ursache: Es wurde versucht, ein Datum konstant oder System v verwenden Ariable, wie USER, in einer Prüfbedingung, die in einer CREATE TABLE- oder ALTER TABLE-Anweisung nicht vollständig angegeben wurde. Für Beispiel wurde ein Datum ohne das Jahrhundert angegeben. * Aktion: Geben Sie die Datumskonstante oder die Systemvariable vollständig an. Einstellen der Veranstaltung 10149 erlaubt Einschränkungen wie „a1> '10 âMAY-96' “, , die einen Fehler vor dem 8. Version erstellt werden dürfen
Warum es falsch ist?
Ich verstehe immer noch nicht, warum ich es nicht hinzufügen können, und ich würde freundlich lieben, wenn es mir jemand
Dank
Oracle erlaubt Ihnen nicht, 'sysdate' für eine Einschränkung zu verwenden, da dies nur überprüft werden kann, wenn der Datensatz erstellt wird. –
Als Alternative können Sie einen Trigger verwenden – cha
Als allgemeine Philosophie macht es nicht wirklich Sinn, "Constraints" zu haben, die erfüllt sein können oder nicht, je nachdem, ob sie "jetzt" oder "in zehn Minuten" bewertet werden. (wörtlich, da SYSDATE eine Uhrzeit-Komponente hat). Dieselbe Bedingung, heute oder morgen evaluiert, sollte zum gleichen Ergebnis führen. – mathguy