是想生成GUID吗?
SQL> select sys_guid() from dual ;
SYS_GUID()
--------------------------------
F18031C69D8345DEB305D4B2E796A282
你可以把表的主键字段的缺省值设为sys_guid()
insert into luxian_info (id) values(sys_guid());
UUID原理
还是转载http://wenda.tianya.cn/wenda/thread?tid=6b95aa8c41a5d272
http://jiasudu.javaeye.com/blog/151101
jdk5.0中引入的UUID
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。
uuid
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。
UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID
import java.util.UUID;
public class Test {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println (uuid);
}
}
UUID的Java参考文档请参照:
http://www.cuku.net/api/java/util/UUID.html
另外一个说明:
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID (Globals Unique Identifiers)。
调查:
有 4 种不同的基本 UUID 类型:基于时间的 UUID、DCE 安全 UUID、基于名称的 UUID 和随机生成的 UUID。这四种类型的UUID产生方法请调查。同时,是否可以控制产生的UUID长度在一定范围内。
分享到:
相关推荐
oracle数据库id为uuid类型时自动生成id的工具类,不再依赖sequence自增长
另外,扩展部分展示了如何插入UUID和时间戳到Oracle数据库。这里引入了`uuid`库来生成唯一标识符,`strftime`函数用于格式化日期时间,然后通过`to_timestamp`函数将字符串转换为Oracle的时间戳格式。注意,为了确保...
- **缺点:**当更新的数据量非常大时,可能会导致undo段的占用增加,甚至出现“snapshot too old”错误。 **适用场景:** 适用于数据量不大且无需事务处理的情况。 #### 三、方法二:使用PL/SQL游标循环 **定义:*...
在VC++环境中,使用ADO(ActiveX Data Objects)访问Oracle...你可以根据具体需求调整代码,比如执行插入、更新、删除操作,或者处理更复杂的查询。在实际项目中,还应添加错误处理和资源管理代码,确保程序的健壮性。
在VC++环境中,使用ADO...总的来说,通过ADO在VC++中连接Oracle数据库,你可以轻松地执行各种数据库操作,如查询、插入、更新和删除数据。不过,实际应用中还需要考虑错误处理、事务管理和性能优化等高级话题。
在VC++环境中,远程连接Oracle数据库通常涉及到一系列的步骤和技术,包括设置数据库连接字符串、配置Oracle客户端、使用ODBC或OLE DB驱动程序等。以下是一份详细的教程,旨在帮助你理解并实现这一过程。 首先,确保...
这段代码首先插入列标题,然后遍历记录集,为每一行插入一个新的列表项并填充数据。 6. 关闭连接和释放资源: ```cpp rs->Close(); rs = NULL; conn->Close(); conn = NULL; CoUninitialize(); ``` 完成数据处理后...
要实现类似功能,需要先创建一个序列对象,然后在插入数据时引用这个序列。例如: ```sql CREATE SEQUENCE test_sequence INCREMENT BY 1 -- 指定增量,默认是1 START WITH 1 -- 设置初始值 MAXVALUE 100 -- 可...
通过以上步骤,我们成功地在Oracle中创建了表空间、用户、表、序列,设置了主键、外键和约束,并插入了数据。这些操作是构建关系型数据库系统的基本组成部分,对于数据库管理和应用程序开发至关重要。
这种方式可以使用Oracle序列那样直接写一个返回UUID的SQL来实现。 例如: @Id@GeneratedValue(strategy = GenerationType.IDENTITY,generator = "select uuid()") private String id; 这种方式可以正确地获取UUID...
你可以根据自己的需求进行修改和扩展,以适应特定的数据库操作,如插入、更新、删除等。 总的来说,使用ADO在C++中连接Oracle数据库涉及了DLL管理、注册表配置以及ADO对象的使用。理解这些概念和技术对于进行C++...
当然,这种方法也有其局限性,比如并发插入时可能会导致序列值的跳跃,因为每个事务都独立获取序列值。在高并发环境下,可以考虑使用其他方法,如全局唯一标识符(UUID)或者分布式序列生成服务。但对大多数常规应用...
`uuid.hex`策略生成一个128位的十六进制UUID(Universally Unique Identifier),并将其作为主键插入到数据库中。这种方式确保了主键的全球唯一性,但可能因UUID长度较长而影响性能。 #### 9. uuid.string 与`uuid...
这种策略对应MYSQL的uuid()函数,SQL Server的newid()函数,ORACLE的rawtohex(sys_guid())函数等。 uuid.hex uuid.hex是一种基于uuid的主键生成策略。这种策略和uuid策略类似,但建议使用uuid替换。 在JPA中,...
Ibatis可以直接在插入时使用Java的UUID类生成。 5. **手动指定**:在某些情况下,主键可能由业务逻辑决定,例如用户ID等,此时可在插入数据时直接提供主键值。 了解了这些主键生成策略后,开发者可以根据实际项目...
在选择主键生成策略时,需要考虑数据库特性、并发插入性能以及系统的具体需求。例如,对于并发插入要求高的系统,uuid.hex通常是更优的选择,因为它减少了数据库交互并避免了表锁竞争。而identity和sequence策略虽然...
每当插入新行时,数据库会自动为该列提供一个新的唯一值。 3. **UUID/GUID**:在分布式系统中,为了确保全局唯一性,可以使用UUID(通用唯一识别码)或GUID(全局唯一标识符)。每个UUID都是一个128位的数字,通过...
1. Increment 标识符生成器:这种生成器适用于逻辑主键,它在 Hibernate 初始化时获取表中最大 ID,然后在插入新记录时递增。但这种方法不适用于多线程或分布式环境,因为可能会导致并发问题,即多个进程可能会同时...