MariaDB 10.1.48 のチェック制約が機能しない

MariaDB 10.1.48 のチェック制約が機能しない

次の表があります:

CREATE TABLE t1 (
    a INT, 
    b INT, 
    CONSTRAINT a_greater CHECK (a>b)
);

したがって、a は b より大きくなければなりません。この挿入を実行すると、機能しないはずです。

insert into t1(a,b) values (4,5);

それでも、ステートメントを実行することはできます。

1

データベースのバージョン:10.1.48-MariaDB-0+deb9u2

トリガーを使用してこれを実現できることはわかっていますが、CHECK 制約によって実際に実行する必要があることを実行するには、これはあまりにも多くの労力がかかります。

バグがあるのでしょうか、それとも間違った設定が原因でしょうか? この動作の原因は何でしょうか、どうすれば修正できるでしょうか?

答え1

MariaDBは制約 この章には次のような記述があります。

MariaDB 10.2.1 より前では、制約式は構文で受け入れられましたが、無視されました。

MariaDB 10.1.48 のバージョンが古すぎるため、CONSTRAINT 句は構文的に検証されますが、それ以外は無視されます。

MariaDBをアップグレードする必要があります。現在のバージョンは 11.4.12024年2月から。

関連情報