当前位置: 首页 > 面试题库 >

Oracle数据库中的自动增量主键

轩辕阳焱
2023-03-14
问题内容

我想在ala SQL Server列中实现标识或自动递增值:

CREATE TABLE RollingStock
( 
      Id NUMBER IDENTITY(1,1),
      Name Varchar2(80) NOT NULL      
);

如何才能做到这一点?


问题答案:

正如Orbman所说,实现此目标的标准方法是使用序列。大多数人也将其与插入触发器结合在一起。因此,当插入没有ID的行时,触发器将触发以从序列中为您填写ID。

CREATE SEQUENCE SEQ_ROLLINGSTOCK_ID START WITH 1 INCREMENT BY 1 NOCYCLE;

CREATE OR REPLACE TRIGGER BI_ROLLINGSTOCK
BEFORE INSERT ON ROLLINGSTOCK
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
 WHEN (NEW.ID IS NULL)
BEGIN
  select SEQ_ROLLINGSTOCK_ID.NEXTVAL
   INTO :NEW.ID from dual;
END;

这是在Oracle中使用触发器的少数情况之一。



 类似资料:
  • firebaseDatabase=firebaseDatabase.getInstandatabaseReference=firebaseDatabase.getReference()Query Query=databaseReference.child(“ticket_detail”).orderbychild(“ticket_no”).limittoLast(1);AddListenerFor

  • 问题内容: 我想向具有数据的现有表中添加一个新的自动增量主列。我怎么做? 我先添加了一个列,然后尝试添加一个序列,此后,我迷失了如何插入该列并将其作为主键。 问题答案: 假设您的表被调用t1,您的主键被称为idFirst,创建序列: 然后创建一个触发器,该触发器在插入时增加:

  • 问题内容: SQL Server中自动增量主键的上限是多少?SQL Server自动增量主键达到上限时会发生什么? 问题答案: Joel的答案是正确的,它是您使用的任何数据类型的上限。 这是其中两个的示例: 整数:2 ^ 31-1(2,147,483,647) bigint:2 ^ 63-1(9,223,372,036,854,775,807) 实际上,我所从事的工作已经达到极限。实际错误是: 我

  • 问题内容: 是否可以自动增加非主密钥? 表“ book_comments” 该表上将没有其他索引。但是,我想使列自动递增,以便可以轻松创建另一个表: 表格“ book_comments_votes” 用户将只能对每个书评进行一次投票。该表通过主键强制执行此规则。 题: 是否可以自动增加非主键-例如,自动增加表“ book_comments”中的列? 替代方案,讨论: 如上所述,我想这样做是为了简化

  • 我需要firebase来存储任何模型的自动增量Id数据,我应该做什么?

  • 问题内容: 我有这样的代码 即使我非常确定我是第一次写记录,此代码也会给我一个 sqlite3.IntegrityError 异常。 所以,我尝试 这会将行细插入 基 表BUT中,ID列根本不会自动递增。 我能做什么?任何想法? 问题答案: 在sqlite中,仅当一个整数列是主键时,您才获得自动增量行为。复合键阻止自动增量生效。 通过定义为唯一的主键,然后在上添加一个附加的唯一约束,您可以获得类似