注意事项:
,我确实对此有了一些了解。
问题:
我来自SQL Server后台,并且始终使用标识列作为大多数表的代理主键。
根据我对Oracle的了解,我发现Oracle中最接近的等价物是SEQUENCES,可以用来模拟类似于SQL服务器中的Identity的内容。
由于我是Oracle的新手,我的数据库有100多个表,我关注的主要问题是: -
系统支持Oracle 10G和11G
答案 0 :(得分:2)
考虑到我必须创建一个 Oracle中每个表的序列 (差不多),这会是标准吗? 接受了模拟的实现 身份还是更好/更容易 实现这种方式的方式 在Oracle中实现?
是的,在Oracle中为每个表创建序列是非常典型的。可以对多个表使用相同的序列,但是通过对多个/所有表使用单个序列可能会使其成为瓶颈:see this AskTom q/a
是否有任何特定的GOTCHA 与有这么多序列有关 甲骨文?
我无法想到。
答案 1 :(得分:2)
100多个表并不是很多。我经常处理具有数百个序列的数据库,每个表一个。越多越好。
甚至可以想象拥有比表更多的序列 - 与其他DBMS中的标识列不同,序列不仅可以用于创建代理键值。
另一种方法是使用GUID - 在Oracle中,您可以调用SYS_GUID来生成唯一值。
一篇好文章,其后是对两种方法的利弊评论:http://rwijk.blogspot.com/2009/12/sysguid.html