mysql - sql中的固定数字数据类型

标签 mysql sql

我希望用户只输入11位数字,如果不输入,sql就会出错,我应该在sql代码中使用什么类型的变量。

我当前的代码:

st.executeUpdate("CREATE TABLE  User(idUser numeric(11,0) not NULL,uName char(30), uSurname char (30), uAddress varChar(500), primary key(idUser) )");

最佳答案

如果你想在 MySQL 的数据库端进行这种检查,你可以使用触发器

CREATE TRIGGER tg_bi_user
BEFORE INSERT ON user
FOR EACH ROW 
  SET NEW.idUser = IF(NEW.idUser BETWEEN 10000000000 
                                     AND 99999999999, NEW.idUser, NULL);

诀窍是当NEW.idUser不在正确的范围内时违反NOT NULL。如果您使用的是 MySQL 5.5 或更高版本,您还可以使用 SIGNAL

这里是SQLFiddle演示。尝试取消最后一条插入语句的注释,看看会不会成功。

关于mysql - sql中的固定数字数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19844664/

相关文章:

php - 如何在SQL数据库中显示二进制形式的图像?

mysql - 如何根据 ID 选择 MySQL 行?对性能有影响吗?

mysql - 如何从多个select查询中获取临时表中一行的列/字段数据?

mysql - IN/ALL/ANY 子查询 where 子句中的未知列

sql - 使用 select 时格式化 sql 列

mysql 在两列上获得不同的值

MYSQL数据文件压缩为gz

java - 根据 JComboBox 中选定的项目显示数据库中的记录

mysql - 用另一个 MySQL 表的值更新一个 MySQL 表(原始表的数据类型为 JSOn)

mysql - SQL:根据其他两列提取信息