Anda mencari CHECK
operator SQL. Sayangnya, yang satu ini tidak didukung oleh salah satu mesin MySQL.
Namun, ada solusi dengan memanfaatkan pemicu SQL. Anda dapat menemukan informasi lebih lanjut di CHECK kendala di MySQL adalah tidak berfungsi dan http://dev.mysql.com/doc/ refman/5.7/en/create-trigger.html
Jadi, bagi saya (diperlukan MySQL 5.5+), cuplikan berikut berfungsi:
use test;
CREATE TABLE user (
`user_id` INT NOT NULL,
`username` VARCHAR(50) NULL,
PRIMARY KEY (`id`)
);
delimiter //
create trigger trg_trigger_test_ins before insert on user
for each row
begin
if new.username REGEXP '^[0-9]*$' then
signal sqlstate '45000' set message_text = 'Invalid username containing only digits';
end if;
end
//
delimiter ;
insert into user values(1, '1234');
INSERT
terakhir pernyataan memunculkan Error Code: 1644. Invalid username containing only digits
sementara
insert into `test`.`user` values(1, 'a1234');
telah dimasukkan dengan benar.
NB:Beberapa pujian juga untuk Throw kesalahan dalam pemicu MySQL
pada signal
ide.
Perhatikan bahwa contoh ini hanya melindungi dari INSERT
s. Jika Anda ingin aman, Anda juga perlu menerapkan pemicu pada UPDATE
.