Bạn đang tìm kiếm CHECK
Toán tử SQL. Thật không may, cái này không được hỗ trợ bởi bất kỳ công cụ MySQL nào.
Tuy nhiên, có một cách giải quyết bằng cách sử dụng các trình kích hoạt SQL. Bạn có thể tìm thêm thông tin tại Ràng buộc KIỂM TRA trong MySQL là không hoạt động và http://dev.mysql.com/doc/ refman / 5.7 / vi / create-trigger.html
Vì vậy, đối với tôi (yêu cầu MySQL 5.5+), đoạn mã sau đã hoạt động:
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
cuối cùng câu lệnh nêu ra Error Code: 1644. Invalid username containing only digits
trong khi
insert into `test`.`user` values(1, 'a1234');
đã được chèn đúng cách.
NB:Một số kudo cũng dành cho Ném lỗi trong trình kích hoạt MySQL
trên tín hiệu signal
ý tưởng.
Lưu ý rằng ví dụ này chỉ bảo vệ chống lại INSERT
S. Nếu bạn muốn an toàn, bạn cũng cần triển khai trình kích hoạt vào UPDATE
.