
У меня есть следующая таблица:
CREATE TABLE t1 (
a INT,
b INT,
CONSTRAINT a_greater CHECK (a>b)
);
Итак, a должно быть больше b. При выполнении этой вставки это не должно работать:
insert into t1(a,b) values (4,5);
Тем не менее, я могу опубликовать заявление.
Версия базы данных:10.1.48-MariaDB-0+deb9u2
Я знаю, я мог бы добиться этого с помощью триггера, но это слишком много усилий, просто чтобы сделать то, что на самом деле должно делать ограничение CHECK.
Есть ли ошибка или это может быть связано с какой-либо неправильной конфигурацией? Что может быть причиной такого поведения и как это исправить?
решение1
MariaDBОГРАНИЧЕНИЕ В этой главе есть следующее утверждение:
До версии MariaDB 10.2.1 выражения ограничений принимались в синтаксисе, но игнорировались.
Ваша версия MariaDB 10.1.48 слишком ранняя, поэтому предложение CONSTRAINT синтаксически проверяется, но в остальном игнорируется.
Вам необходимо обновить MariaDB, текущая версия 11.4.1с февраля 2024 года.