Database 什么是序列(数据库)?我们什么时候需要它?
为什么即使有主键,我们也要创建序列?序列将允许您使用唯一的序列化数字填充主键 它与Database 什么是序列(数据库)?我们什么时候需要它?,database,Database,为什么即使有主键,我们也要创建序列?序列将允许您使用唯一的序列化数字填充主键 它与串行或自动递增主键的不同之处在于: 它是一个实际的数据库对象(您需要创建它): sql>创建您的序列的序列名 您可以将独立权限分配给不同的数据库用户: sql>允许选择您的\u序列的\u名称\u来命名您的\u用户的\u 您可以使用具有在多个表(而不仅仅是一个表)中不同的唯一编号。假设您有四个带有数字主键的表,并且希望这四个表中的数字是唯一的。您可以使用一个序列来实现这一点,而不必担心实现锁定机制来“手动”实现 可
串行
或自动递增
主键的不同之处在于:
- 它是一个实际的数据库对象(您需要创建它):
sql>创建您的序列的序列名代码>
- 您可以将独立权限分配给不同的数据库用户:
sql>允许选择您的\u序列的\u名称\u来命名您的\u用户的\u代码>
- 您可以使用具有在多个表(而不仅仅是一个表)中不同的唯一编号。假设您有四个带有数字主键的表,并且希望这四个表中的数字是唯一的。您可以使用一个序列来实现这一点,而不必担心实现锁定机制来“手动”实现
- 可以将其编号更改为所需的任何值
- 你可以循环浏览它的编号
sql>创建您的序列maxvalue 1500周期的序列名代码>
这两种方法通常一起使用,为没有合理的“本机”键的实体生成自动主键。但它们是两个独立的概念;您可以使用在插入期间显式填充主键的表,也可以使用用于填充非PK列的序列(甚至在存储过程中强制使用,与插入记录不同)。如果没有事务隔离,那么如何使用它呢?对于ID的生成没有事务隔离。它总是返回序列的下一个值。事务隔离意味着并行事务要么获得相同的值,要么需要等待另一个事务提交,然后才能获得下一个值。这既不是必需的,也不是有用的。它是如何处理特定记录的删除的?@Prashant:序列本身与记录完全无关。当你需要一个ID时,它只是一个递增的计数器。它甚至不知道这个ID的用途。它根本不“处理”记录的删除。那么序列与自动递增主键有何不同呢?或者这实际上是一个序列?