sql中的固定数字数据类型

时间:2013-11-07 19:15:34

标签: 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) )");

2 个答案:

答案 0 :(得分:0)

如果变量是数字,则可以使用检查约束:

CREATE TABLE  User(idUser numeric(11,0) not NULL,uName char(30), uSurname char (30), 
uAddress varChar(500), primary key(idUser), 
CHECK(idUser > 9999999999 AND idUser <= 99999999999) )'

虽然您想要检查数据类型numeric是否接受足够大的数字。如果没有,你可以使用varchar

答案 1 :(得分:0)

如果要在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);

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

这是 SQLFiddle 演示。尝试取消注释最后一个insert语句,看它不会成功。