2012-05-08 16 views
5

Ich versuche, die Anzahl der Zahlen zu begrenzen, die ein Integer-Feld enthalten kann. Zum Beispiel möchte ich, dass das Feld eine Zahl enthält, die nicht länger als 5 ist, also wäre 99999 der höchste gültige Eintrag.Begrenzte Ganzzahl Datentyp Feldlängen

Ist dies in MySQL möglich? Ich habe mir die Dokumentation angeschaut, aber meine Antwort nicht gefunden.

Antwort

3

Leider sind weder die CHECK-Einschränkung noch benutzerdefinierte Typen in MySQL implementiert. Vielleicht wird sich das in zukünftigen Versionen ändern.

Bis dahin können Sie einen Trigger verwenden, um die Eingabe zu korrigieren, wenn das ein Weg für Sie zu gehen:

delimiter // 
CREATE TRIGGER trigger_check BEFORE INSERT ON your_table 
FOR EACH ROW 
BEGIN 
    IF NEW.NUM > 99999 THEN 
     SET NEW.NUM = 0; 
    END IF; 
END 
// 
+1

Aus Gründen der Vollständigkeit, können Sie auch einen Fremdschlüssel zu einer Tabelle ganzer Zahlen verwenden, die endet bei 99999. –

0

Dies ist auf DB-Ebene nicht möglich. Sie müssen entweder gespeicherte Prozeduren verwenden oder diese Logik in Ihre Anwendung einfügen.

http://dev.mysql.com/doc/refman/5.5/en/integer-types.html

Ein Medium int ist der nächste Sie bekommen können.

Auch werden Sie wahrscheinlich so etwas wie dies irgendwann sehen:

CREATE TABLE blah (col INT (5)); 

Das ist nicht, was Sie denken, wenn tut. Dies beschränkt die Länge des Feldes nicht auf 5 Stellen. Es bedeutet, dass es auf 0 gepolstert sein sollte, wenn der Nullpunkt auf die Spalte gesetzt ist.

1

Sie können einen Trigger hinzufügen, um dies zu erzwingen, wenn eine Änderung an der Datenbank vorgenommen wird. Der Trigger wird ausgeführt, bevor die Änderung angewendet wird, um zu überprüfen, ob sie mit einem "gültigen" Eintrag aktualisiert wird. Wenn der Eintrag ungültig ist, kann das Update zurückgewiesen werden.