我希望用户只输入 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) )");
如果变量是数字,您可以使用检查约束:
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
如果你想在 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演示。尝试取消注释最后一个插入语句,看看它不会成功。