我安装了一个Oracle数据库桌面系统。
建立了一个表tuser,包含列: 用户名 yhm(varcha2)、口令 kl(varcha2)、真实姓名 zsxm(varcha2)、工作单位 gzdw(varcha2)、注册日期 zcrq(date)应用程序中的sql插入语句:
insert into tuser(yhm,kl,zsxm,gzdw,zcrq) values('zs','1qaz','张三','文轩集团',to_date('2010-01-23 11:52:51','YYYY-MM-DD HH24:MI:SS'))现在表中只插入了这一条数据。
使用查询语句:select * from tuser按理说,得到的查询结果应该是:
yhm    kl    zsxm    gzdw        zcrq
zs     1qaz  张三    文轩集团    2010-01-23 11:52:51实际得到的结果是:
yhm    kl    zsxm    gzdw        zcrq
23     1qaz  张三    文轩集团    23-1月 -10
我通过几次实验,发现yhm中的值是整数,一直递增。为什么???请高手指点,谢谢!

解决方案 »

  1.   

    一直递增?是什么意思,张三yhm字段值不是'zs'吗,变成整数,而且每次查询得到的结果都不一样?
    看看前台程序是否有对yhm进行更新操作
    还有是否错误使用了序列
      

  2.   


    是这样的:我第一次注册时,yhm的值为1,第二次注册时,yhm的值为2,,,,以此类推,第23次注册值为23.不知道什么原因。
      

  3.   

    第一次遇到这样的事情,oracle还会自动增长!
      

  4.   

    看看是否在tuser表上有触发器,自动用序列给yhm赋值
    查看:
    select * from all_triggers where table_name='TUSER';
      

  5.   

    select dbms_metadata.get_ddl('TRIGGER',(select trigger_name from all_triggers where table_name='TUSER')) from dual;
    查看触发器定义
      

  6.   

    哦,明白了,可以在这个表里all_triggers 查看有关表的触发器。
    还可以在dbms.metadata.get_ddl('Triger',触发器名字)来查看触发器的数据库定义语句。学习了。呵呵
      

  7.   

    你的表上面有一个触发器,这个触发器引用了一个序列,并用这个序列值替换了你的yhm的值。
    检查你这个表上的触发器设置,找到这个触发器将其禁用。或者干脆禁用这个表上所有的触发器:
    alter table tuser disable all triggers;
    启用
    alter table tuser enable all triggers;
      

  8.   

    可以在pl/sql developer中查看引用tuser表的所有对象
    在左连的对象浏览窗口中找到表tuser
    依树型结构可以选择
    Referenced by (查看所有引用该表的其它对象)
    Triggers (查看引用该表的触发顺)
      

  9.   

    可能你在表上针对yhm字段有sequence+trigger。
    你的表可能不是自己创建的,而是利用导入程序导入的。