
ich habe folgende Tabelle:
CREATE TABLE t1 (
a INT,
b INT,
CONSTRAINT a_greater CHECK (a>b)
);
Also muss a größer als b sein. Bei der Ausführung dieses Inserts sollte es nicht funktionieren:
insert into t1(a,b) values (4,5);
Trotzdem kann ich die Anweisung ausführen.
Die Version der Datenbank:10.1.48-MariaDB-0+deb9u2
Ich weiß, ich könnte dies mit einem Trigger erreichen, aber das ist viel zu viel Aufwand, nur um das zu tun, was eigentlich durch die CHECK-Einschränkung getan werden sollte.
Liegt ein Fehler vor oder könnte das an einer falschen Konfiguration liegen? Was könnte dieses Verhalten verursachen und wie kann ich es beheben?
Antwort1
Die MariaDBZWANG Kapitel enthält diese Aussage:
Vor MariaDB 10.2.1 wurden Einschränkungsausdrücke in der Syntax akzeptiert, aber ignoriert.
Ihre Version von MariaDB 10.1.48 ist zu früh, daher wird die CONSTRAINT-Klausel syntaktisch überprüft, ansonsten aber ignoriert.
Sie müssen MariaDB aktualisieren, die aktuelle Version ist 11.4.1ab Februar 2024.