在sql2005的数据类型有一个UNIQUEIDENTIFIER,想转换到oracle中发现没有匹配的,应该如何解决呢?
1,因为很多的表都用了此字段T_ID,各表对此类型的字段,还有关联性,所以转到oracle中,我本来想用varchar2,但是还要考虑到以后代码中,我怎么能确认一个唯一的T_ID呢,因为在sql2005中,次T_ID是唯一的。
2,如果要用char类型,那么在oracle中,是否我可以找到一个唯一的生成T_ID呢?麻烦各位帮我看看?谢谢

解决方案 »

  1.   

    orcale
    可以用SYS_GUID()来产生一个值
    在Oracle9i和Oracle 10g 里SYS_GUID产生得到的数据是32 位的,如:234E45F0077881AAE0430AA3034681AA其实一般用序列解决这个问题,序列一般采用自增数
    比你看个常见的CREATE SEQUENCE SQ_ORD_ID
      START WITH 1453859
      MAXVALUE 9999999
      MINVALUE 1
      NOCYCLE
      NOCACHE
      ORDER;用的时候只要取nextval就行了
    比如insert order(order_id,....)
    values(sq_ord_id.nextval,.....)
      

  2.   

    to,hebo2005
    1,这个产生的SYS_GUID()应该是唯一的吧,如果这样,可以解决我的问题
    2,这个SEQUENCE,没有用过。
    如果我的表结构是T_ContractInfo(ContractInfoID,ContractInfoName,ContractCount,CreateDate)我的ContractInfoID这个就是SYS_GUID,如果用SEQUENCE,该如何实现建表呢,不好意思,对oracle不是很熟悉,请指点一下谢谢
      

  3.   

    如果用序列的话,表就这样建,没什么差别的,关键在插入时调用序列
    另外你的表要做个主键,这样有重复就插不进行的,不过序列只要不到MAX,并且不循环的话,是不会重复的,而且是按顺序增长的MS  SQL这点倒是方便,有自增长字段 
      

  4.   

    to,hebo2005 哦,谢谢!1,还有一个问题,我现在用oracle的sqldeveloper去把sql 2005的表的数据转到oracle中,因为看到有几种转的方式,根据您的经验,用那种比较好呢?
    2,或者您给我点建议,用其他的第三方工具转?
    3,还有转的时候要注意那些问题?
      

  5.   

    这个我倒是没转过,我MSSQL接触比较少
      

  6.   

    to,hebo2005 
    我看到你的sql的总结(2),还有其他的吗?能否给我一下连接啊: