Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để ngăn chặn việc sử dụng các chữ số trong cột VARCHAR bằng cách sử dụng mysql?

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 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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.lang.Incomp Tương thíchClassChangeError:Đã tìm thấy lớp com.mysql.jdbc.Statement, nhưng giao diện được mong đợi

  2. mysql PDO cách liên kết LIKE

  3. Thuật toán để chọn các địa điểm phổ biến nhất từ ​​cơ sở dữ liệu

  4. Cách truy xuất tất cả các bản ghi bằng khóa ngoại với Laravel

  5. MySQL:Sử dụng các ngày trong điều kiện giữa để có kết quả