在sql2005的数据类型有一个UNIQUEIDENTIFIER,想转换到oracle中发现没有匹配的,应该如何解决呢?
1,因为很多的表都用了此字段T_ID,各表对此类型的字段,还有关联性,所以转到oracle中,我本来想用varchar2,但是还要考虑到以后代码中,我怎么能确认一个唯一的T_ID呢,因为在sql2005中,次T_ID是唯一的。
2,如果要用char类型,那么在oracle中,是否我可以找到一个唯一的生成T_ID呢?麻烦各位帮我看看?谢谢
1,因为很多的表都用了此字段T_ID,各表对此类型的字段,还有关联性,所以转到oracle中,我本来想用varchar2,但是还要考虑到以后代码中,我怎么能确认一个唯一的T_ID呢,因为在sql2005中,次T_ID是唯一的。
2,如果要用char类型,那么在oracle中,是否我可以找到一个唯一的生成T_ID呢?麻烦各位帮我看看?谢谢
可以用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,.....)
1,这个产生的SYS_GUID()应该是唯一的吧,如果这样,可以解决我的问题
2,这个SEQUENCE,没有用过。
如果我的表结构是T_ContractInfo(ContractInfoID,ContractInfoName,ContractCount,CreateDate)我的ContractInfoID这个就是SYS_GUID,如果用SEQUENCE,该如何实现建表呢,不好意思,对oracle不是很熟悉,请指点一下谢谢
另外你的表要做个主键,这样有重复就插不进行的,不过序列只要不到MAX,并且不循环的话,是不会重复的,而且是按顺序增长的MS SQL这点倒是方便,有自增长字段
2,或者您给我点建议,用其他的第三方工具转?
3,还有转的时候要注意那些问题?
我看到你的sql的总结(2),还有其他的吗?能否给我一下连接啊: