2017-01-14 5 views
1

Hallo Ich habe eine Datetime Spalte und ich möchte eine Zeitbeschränkung auf sie wie würde ich das tun?Zeit Restriktion in Spalte

Zum Beispiel einer Reihe von Zeit von 3.00.00 bis 15.00.00 alle Daten, die diese Kriterien erfüllen gespeichert werden, wenn nicht die Eingabe von Daten in den

+0

Wie fügen Sie Daten in Ihre Tabelle ein? Ich meine, verwenden Sie und Client-Anwendung oder Sie manuell Daten in Ihre Tabelle mit mysql selbst einfügen? – EhsanT

Antwort

2

Spalt werfen und Fehler auf und stoppt In MySQL müsste dies mit einem Trigger für INSERT und UPDATE tun. Wenn also jemand versucht, einen Wert einzugeben, der nicht Ihren Kriterien entspricht, erzeugen Sie ein SIGNAL.

mysql> CREATE TABLE MyTable (
    my_datetime DATETIME 
); 

mysql> DELIMITER ;; 
mysql> CREATE TRIGGER MyTable_ins BEFORE INSERT ON MyTable 
FOR EACH ROW BEGIN 
    IF (NOT TIME(NEW.my_datetime) BETWEEN '03:00:00' AND '15:00:00') THEN 
    SIGNAL SQLSTATE '45000' 
    SET MESSAGE_TEXT = 'Time does not fall in the range allowed.' 
    END IF; 
END;; 
mysql> DELIMITER ; 

erhalte ich die Fehlermeldung, wenn versuchen, etwas zu tun, ich sollte nicht:

mysql> INSERT INTO MyTable SET my_datetime = '2017-01-13 18:00:00'; 

ERROR 1644 (45000): time does not fall in the range allowed 

Aber es funktioniert, wenn ich eine Zeit wählen, die erlaubt ist:

mysql> INSERT INTO MyTable SET my_datetime = '2017-01-13 11:00:00'; 

Query OK, 1 row affected (0.00 sec) 
0

ich einige Graben tat und etwas lesen. Ich habe ein paar Sachen auf meinem eigenen Server getestet. Es funktioniert nicht. Dann fand ich diese Antwort:

CHECK constraint in MySQL is not working

Ja, es nimmt eine CHECK Einschränkung als gültige Syntax, dann ist es völlig ignoriert.

Und während ich getestet und geschrieben habe, hat Bill die richtige Antwort für MySQL gepostet. Mach was er sagt.

+1

Ja, es ist enttäuschend, dass MySQL immer noch keine CHECK-Einschränkungen unterstützt. Noch ärgerlicher ist, dass es keine Warnung anzeigt, wenn Sie versuchen, eine solche Einschränkung zu deklarieren. Die Einschränkung wird nicht gespeichert. –

Verwandte Themen