我的需求是:要保存一个密码到数据库,这个密码必须为6位数字。
如果我将number类型当做数据类型的话,假如最前面几位为0的话,直接用number保存,前面几位为0的就会丢失,所以我想用varcher类型保存,但是要加一个约束。也就是说这个约束必须满足下面几个条件:
1,大于0
2,必须为6位
3,必须全部为数字
我不想通过JAVA、C等语言在读取写入的时候去做判断,而是直接通过oracle数据库去完成这一工作,请问应该怎么做呢?
假如我的表是这样的:
表名:use 主键:use_id
use_id use_name password
1 张三 001234
2 李四 022222
------解决方案--------------------
数据库是用来存东西的
java是用来实现逻辑的
何苦呢?
何况每次校验都要连接一次数据库,性能也不行啊。
------解决方案--------------------
------解决方案--------------------
怕是没有你要求的这个约束哦..
你非不想用JAVA或C实现的话,只能用ORACLE了,可参考以下
- SQL code
CREATE TABLE usermsg(use_id NUMBER(5),use_name VARCHAR2(30),password VARCHAR2(6));CREATE OR REPLACE PROCEDURE pusermsgins(p_id IN NUMBER,p_name IN VARCHAR2,ppassword IN VARCHAR2) IS v_password NUMBER; BEGIN SELECT To_Number(ppassword) INTO v_password FROM dual; INSERT INTO usermsg VALUES (p_id,p_name,ppassword); COMMIT; EXCEPTION WHEN OTHERS THEN raise_application_error(-20102,'** plz input the Correct password **' ||sqlerrm);END;