我希望用户只输入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) )");发布于 2013-11-07 23:09:21
如果您想在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演示。试着取消对最后一个insert语句的注释,看它不会成功。
发布于 2013-11-07 19:42:03
如果变量是数字变量,则可以使用check约束:
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
https://stackoverflow.com/questions/19844664
复制相似问题