MySQL tidak memberlakukan batasan pemeriksaan.
Ini adalah penyimpangan yang terdokumentasi dengan baik dari standar SQL. (Meskipun tidak terduga oleh yang belum tahu.)
Jika Anda memerlukan database MySQL untuk menerapkan "cek batasan", penegakan harus dikodekan menjadi BEFORE INSERT
dan BEFORE UPDATE
pemicu.
Catatan ini:
dimakamkan di Manual Referensi MySQL, di bawah CREATE TABLE
sintaks.
Referensi:https://dev.mysql.com/doc /refman/5.5/en/create-table.html
PERINGATAN TENTANG ENUM
Sebuah ENUM
tidak membatasi nilai "tidak valid" untuk dimasukkan; nilai yang tidak valid diterjemahkan menjadi string panjang nol, peringatan dikeluarkan, tetapi itu bukan kesalahan.
Demonstrasi:
CREATE TABLE foo (gen ENUM('M','F'))
INSERT INTO foo (gen) VALUES ('x')
-- Warning Code : 1265
-- Data truncated for column 'gen' at row 1
SELECT gen, CHAR_LENGTH(gen) FROM foo;
-- gen CHAR_LENGTH(gen)
-- --- ----------------
-- 0