
tengo la siguiente tabla:
CREATE TABLE t1 (
a INT,
b INT,
CONSTRAINT a_greater CHECK (a>b)
);
Entonces a debe ser mayor que b. Al ejecutar este insert, no debería funcionar:
insert into t1(a,b) values (4,5);
Aún así, puedo ejecutar la Declaración.
La versión de la base de datos:10.1.48-MariaDB-0+deb9u2
Lo sé, podría lograr esto con un disparador, pero esto es demasiado esfuerzo, solo para hacer lo que realmente debería hacer la restricción CHECK.
¿Hay algún error o podría deberse a alguna configuración incorrecta? ¿Qué podría causar este comportamiento y cómo podría solucionarlo?
Respuesta1
La MariaDBRESTRICCIÓN El capítulo tiene esta declaración:
Antes de MariaDB 10.2.1, las expresiones de restricción se aceptaban en la sintaxis, pero se ignoraban.
Su versión de MariaDB 10.1.48 es demasiado temprana, por lo que la cláusula CONSTRAINT se verifica sintácticamente pero, por lo demás, se ignora.
Necesita actualizar MariaDB, la versión actual es 11.4.1a partir de febrero de 2024.