mysql verhindern, dass negative zahlen
Ist Ihr ein int-Feld in mysql, wo negative zahlen sind nicht erlaubt? oder genauer gesagt, wenn eine negative Zahl wird in das Feld eingefügt wird insert-null. Ich Frage das, weil wir haben ein scoring-system und wir können nicht zulassen, Menschen zu haben, negative Bewertungen. Also, wenn Ihre Punktzahl nicht erreichen, bellow zero, es wird legen Sie einfach eine null statt. Ich bin versucht dies zu tun, ohne eine Abfrage an den Benutzer, um die Punktzahl zu überprüfen, ob es wird fallen, Balg null.
InformationsquelleAutor user962449 | 2012-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Neben der DDL ändern, (UNSIGNED INT), die von anderen empfohlen, würde ich auch ändern Sie Ihre Anwendungslogik. Sie sagen:
Sie nicht haben, um explizit zu überprüfen, in einer separaten Abfrage:
Nun Ihre Anwendung nicht AKTUALISIEREN
score
auf unter null fallen, noch wird es darin Fehler generieren oder Warnungen je nach SQL-Modus.InformationsquelleAutor pilcrow
Ja. Sie können eine
int
Feld und markieren Sie es alsUNSIGNED
.Vom MySQL 5.0 Reference Manual:
InformationsquelleAutor DevelRoot
MySQL hat eine
UNSIGNED
qualifier für integer-Typen.Negative Werte werden auf null geklemmt, sondern generiert eine Warnung:
Ich weiß nicht, ich habe nie eingeschaltet, Fehler zu fangen, wie die. Warum versuchst du es nicht?
InformationsquelleAutor Alnitak
Ob Sie im strikten sql-Modus würde dies einen Fehler auslösen, und eine insert - /update scheitern würde.
Ich normalerweise erstellen Sie eine benutzerdefinierte Funktion für diese Art der Sache. (In diesem Fall sehr trivial "if (expr1, expr2, expr3)" wird den trick tun
InformationsquelleAutor Murray McDonald