2016-04-04 16 views
-1

Ich habe ein Feld appointment_date und appointment_time und der Datentyp ist date bzw. time. Der Tabellenname lautet appointment. Was unser Lehrer wollte, war in der Lage, nur dann einen Termin hinzuzufügen, wenn er größer oder gleich current_date oder current_time ist. Ich bin ziemlich verwirrt mit, wie getdate(), sysdate(), dateadd() oder irgendwelche DATE-Funktionen arbeiten. Hoffe, du kannst mir helfen. Vielen Dank.Datum und Uhrzeit nur einfügen wenn> = Aktuelles Datum

+0

Sie müssen wahrscheinlich einen Trigger für tis schreiben. Hast du davon erfahren? –

+0

Ja, wir haben Auslöser angesprochen. Ich bin meistens mit der Syntax in MySQL verwirrt. Trotzdem danke. – Jin

Antwort

0

Wenn Sie sich mit der Zeit/Datumsfunktionen verloren gehen, gibt es eine große Dokumentation mit MySQL im Netz, überprüfen Sie es hier heraus: Date and time functions

In Anbetracht der Tatsache, dass MySQL nicht eine bedingte INSERT-Anweisung hat, Ich würde empfehlen, alle möglichen Überprüfungen der Werte durchzuführen, die Sie einfügen möchten, bevor Sie eine einfache Einfügung ohne bedingte Überprüfung vornehmen.

+0

Die Syntax ': varName' ist die JCBD-Vorlagensyntax. Sie enthält die Werte, die Sie zuweisen möchten. Dies sollte an die Art und Weise angepasst werden, wie Sie Werte in Ihre SQL-Abfrage einfügen. –

+0

Danke für den Vorschlag. Wie fügen Sie diese in MySQL ein, wenn es Ihnen nichts ausmacht? – Jin

+1

In mysql kann die on -Klausel nur 'bei der doppelten Schlüsselaktualisierung' haben, Sie können dort keine solchen Prüfungen durchführen. – Shadow

0

In sql können Sie solche Logik mit einer check constraint erzwingen, leider implementiert mysql diese Art von Einschränkung noch nicht. Das bedeutet, dass Sie entweder die Bedingung in der Anwendung selbst überprüfen müssen, bevor Sie eine insert-Anweisung aufrufen, oder Sie müssen a stored procedure erstellen, um die erwarteten Ergebnisse zu erzielen.

In beiden Lösungen ist die Logik einfach: Mit einer if-Bedingungsanweisung überprüfen Sie, ob der Wert, den Sie einfügen möchten, größer ist als das aktuelle Datum oder die Zeit (es ist tatsächlich ziemlich wichtig, mit dem Sie es vergleichen).

Die dritte Lösung besteht darin, einen Trigger vor dem Einfügen zu erstellen und eine SQL-Fehlernachricht mit signal daraus zu erstellen, um das Einfügen des Datensatzes zu verhindern.

+0

Okay. Ich werde deine Vorschläge versuchen. Danke :) Ich bin irgendwie neu in diesem Ding. – Jin