我希望用户只输入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) )");
答案 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语句,看它不会成功。