0

我希望用户只输入 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) )");
4

2 回答 2

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

于 2013-11-07T19:42:03.960 回答
0

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

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演示。尝试取消注释最后一个插入语句,看看它不会成功。

于 2013-11-07T23:09:21.220 回答