Oracle数据库中的自增主键

2024-06-25

我想在 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 中使用触发器有意义的少数情况之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle数据库中的自增主键 的相关文章

  • 如何获取行数据绑定事件中单元格的值?以及如何检查单元格是否为空?

    我正在使用 sqldatasource 和GridView 我想从 GridView 中获取单元格的值RowDataBound事件 因为我不能使用e RowIndex 如果单元格为空 如何检查 updatetng 事件 我用了if null
  • ORACLE 更新并返回 OLD 和 NEW 值

    PL SQL Oracle 12c 中是否有与此 T SQL 查询等效的内容 UPDATE A SET A columnA 10 WHERE A columnB lt 30 OUTPUT INSERTED DELETED 查询更新表A 同时
  • MySQL 设置自动增量“Ad Hoc”

    有没有办法以 临时 方式将 mysql 的 auto increment 设置为某个整数 例如 表中已删除 N 个最新行 因此主键 auto increment 与实际行数相差 N 有没有办法将 auto increment 设置为正确的数
  • 在sql中运行累积返回

    希望获得一系列每日收益的连续累积收益 我知道这可以使用 exp 和 sum 来解决 但我的返回序列不是使用 LN 计算的 希望在不使用循环的情况下解决这个问题 因为它们在 sql 中效率非常低 让它跑得快很重要 Dataset 期望的结果
  • 如何授予“授予创建会话”权限?

    Oracle中如何给用户或角色赋予创建会话的权限 你会使用WITH ADMIN OPTION选项中的GRANT陈述 GRANT CREATE SESSION TO lt
  • 从多个表插入表

    嘿 我有一个连接表 连接两个不相关的表 两个表都有ID的 我需要选择ID从每个表中使用WHERE具有不同的值 例如这就是我的看法 INSERT INTO c aID bID VALUES SELECT a ID WHERE a Name M
  • 如何使用 SQL 语法更改主键约束?

    我有一个表 其主键约束中缺少一列 我不想通过 SQL Server 对其进行编辑 而是想将其放入脚本中以将其添加为更新脚本的一部分 我可以使用什么语法来执行此操作 我必须删除并重新创建关键约束吗 是的 唯一的方法是使用 Alter 表删除约
  • SQL 用逗号替换点

    我有以下代码 SELECT cast Listenpreis 1 19 as decimal 29 2 as Listenpreis FROM SL M03KNE dbo ARKALK 我得到这个值 5 59 我尝试将点替换为 komma
  • 案例与解码

    参考之前的一篇question https stackoverflow com questions 3193384 display sql custom text from table column result 我想知道是否总是可以更换D
  • Sql Server 2008 强制日期从 dd/MM/yyyy 到 MM/dd/yyyy

    我在 sql server 2008 上遇到了一个奇怪的问题 我试图用dd MM yyyy格式写入sql server 2008 但是插入日期后它会自动转换为MM dd yyyy 注意 我的电脑时钟格式是dd MM yyyy 我的报告查看器
  • 具有多个表的 SQL select 语句

    给出以下两个表 Person table id pk first middle last age Address table id pk person id fk person id street city state zip 如何创建返回
  • SQL LIKE 的 C# 版本

    有没有办法在 C 中搜索字符串中的模式 像 Sql LIKE 这样的东西会非常有用 正则表达式允许一切LIKE允许以及更多 但具有完全不同的语法 然而 由于规则LIKE是如此简单 其中 表示零个或多个字符 并且 表示一个字符 并且两者LIK
  • ISDATE 相当于 DB2

    我有一个包含字符格式日期的表 我想检查日期的格式 请让我知道如何在 DB2 中做到这一点 我知道有一个函数 ISDATE 但它在 DB2 中不起作用 我在 AS400 上使用 db2 作为日期基础 请帮助我 实际上 看起来 DB2 for
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • 物化视图快速刷新-更新基表时插入和删除

    大家好 Stackoverflowers 的朋友们 TLDR MVIEW 是否使用UPDATE or DELETE INSERT刷新期间 前一段时间 当我在 Oracle 中摆弄物化视图时 遇到了一件晦涩难懂的事情 这是我的例子 2 个基表
  • 限制 SQL 查询的响应时间

    我在这里发布了一个关于我的 gridview 绑定的问题 将GridView与多条记录绑定 https stackoverflow com questions 5599704 bind gridview with many records
  • 根据多列删除重复记录

    在我们的系统中 我们每小时从外部数据库进行导入 由于导入脚本中存在错误 现在存在一些重复记录 如果任何记录具有相同的内容 则视为重复 legacy id and company 我可以运行什么代码来查找并删除这些重复项 我正在玩这个 Pro
  • Oracle TO_DATE 函数中跳过字符

    我正在导入 tsv 中具有 SQL Server 格式日期的数据 yyyy mm dd hh24 mi ss mmm 使用 SQL Developer 的导入数据向导导入 Oracle 数据库 我怎样才能忽略 mmm用于将它们导入 DATE
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • 邮政编码 10 位数字字符使用的约束检查

    我有一张桌子 上面有Char 10 列类型 命名postal Code我需要对所有值进行约束检查 就像 10 位数字一样1234567890没有别的 我使用以下内容 CONSTRAINT CH PCDigit CHECK PostalCod

随机推荐

  • 如何在 async/await 语法中使用 Promise.prototype.finally() ?

    实际上我的主要问题是使用Promise prototype catch in async await ES8语法 毫无疑问Promise prototype then 本质上是存在的async await syntax 我搜索了有关使用Pr
  • 哪里可以获取 PhoneGap 的 BlackBerry CSK 文件?

    我想使用 PhoneGap 签署我的 BlackBerry 应用程序 当我添加密钥文件时 它要求提供 CSK 文件 我去了https www blackberry com SignedKeys https www blackberry co
  • 使用 OpenGL 或 D3D 绘制椭圆的有效方法

    有一种快速画圆的方法 void DrawCircle float cx float cy float r int num segments float theta 2 3 1415926 float num segments float c
  • 软键盘有问题

    大家好 我是 Android 新手 在我的项目中陷入了非常愚蠢的问题 我有一个 EditText 它是在列表视图的标题视图中定义的 每当用户触摸 EditText 软键盘时就会显示 我有一个叫做 清除 按钮的东西 它可以清除 EditTex
  • 如何使用 docker-compose 在主机网络模式下运行 docker 容器?

    我需要在主机网络模式下从 docker compose 运行容器 例如 如果我运行单个容器 我会写 docker run net host my image 这部分怎么做 net host在 docker compose 中 docker
  • 是否可以在不从 git 克隆或拉取的情况下获取分支名称?

    我想获取 git 存储库的所有分支名称 目前 我克隆存储库 然后将它们获取到本地计算机上 这是低效的 因为我所需要的只是名称而不是其他 我想知道是否可以这样做 如果是这样 我可以使用什么命令 在本地 无需克隆 您可以键入 使用 gitls
  • 惠普定制 OEM Windows 上的 Delphi 平台错误

    我在设置我的计算机以便运行 Delphi 时不断遇到相同的错误 我已经在PLATFORM环境变量 将其转换为 win32 但仍然给出相同的错误 错误错误 平台变量 HPD 无效 PLATFORM 必须是以下之一 Win32 Win64 An
  • 如何对我的 asp.net-mvc 控制器的 OnActionExecuting 方法进行单元测试?

    我已经重写了控制器的 OnActionExecuting 方法 以根据执行的 filterContext 设置一些内部状态 我该如何测试这个 该方法本身是受保护的 所以我假设我必须在调用堆栈中走得更高 我需要什么代码来测试这个 我正在使用
  • 在environment.rb中设置的常量在开发模式下消失

    了解 Rails 缓存如何工作的人可以真正帮助我 这是嵌套在 Rails Initializer run 块内的代码 config after initialize do SomeClass const set SOME CONST SOM
  • 未定义/未指定/实现定义的行为警告?

    当编译器注意到具有未定义 未指定 实现定义的行为的语句时 它不能发出警告 如果抛出错误则更好 吗 可能是将一个语句标记为错误 标准应该这么说 但它至少可以警告编码员 实施这样的选择是否存在任何技术困难 或者这根本就是不可能的 我收到这个问题
  • Python Pandas:两个日期之间的差异以周为单位?

    当试图找出两个日期之间的差异 以周为单位 时 import pandas as pd def diff start end x millis end millis start return x 1000 60 60 24 7 1000 de
  • Java 中的堆栈,“包含”问题

    我在程序中使用堆栈 但是当程序尝试检查堆栈中包含哪些元素时遇到问题 我在堆栈中使用整数数组 简短的例子是 Stack
  • MySQL 多索引与多列索引进行搜索

    在我正在编写的软件中 它能够搜索给定的表以获取信息 搜索表单有 5 个字段 当然所有字段都对应于表中的不同列 但所有字段都是可选的 我的问题是关于多列索引是否有效以及为其构建查询的正确方法 如果我有一个跨 5 列的索引 并且我构建了一个查询
  • 在 VSCode 中运行任何 Python 脚本时出现与“&”语法错误?

    在 VSCode 中 我通常使用 Python 扩展运行 Python 脚本 然后右键单击 py 脚本并选择 在终端中运行 Python 文件 在今天之前 此方法运行良好 但现在我遇到了以下问题 C Users Python Python3
  • 映射警告时反应唯一键

    我对反应还很陌生 我面临着一个无法解决的问题 这是我的反应组件 import React from react import Header from Header import ContestPreview from ContestPrev
  • IE中是否有AJAX进度事件以及如何使用它?

    我尝试了所有我能想到的方法 至少可以实现 IE9 中的进度功能 但没有任何效果 所有其他浏览器都可以进入进度函数并编写测试文本 没有任何问题 希望有人能帮助我 谢谢你 var info document getElementById inf
  • .net 中的线程

    我有一个 winforms 应用程序的简单示例 我在目录选择器中选择一个目录 然后单击按钮循环遍历该目录并将目录中的每个文件复制到另一个目录中 我想在后台线程上进行文件复制以避免锁定 GUI 我正在寻找最简单的解决方案 创建后台线程 传递源
  • 语言之间的 Unicode 范围映射

    此链接列出了 7707 种语言http www sil org iso639 3 download asp http www sil org iso639 3 download asp and http en wikipedia org w
  • .NET 自然语言处理工具包 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您能给我一些用于 NET 中自然语言处理的工具包和库吗 有类似 UIMA for NET 的工具吗 有SharpNLP http shar
  • Oracle数据库中的自增主键

    我想在 SQL Server 的列中实现标识或自动递增值 CREATE TABLE RollingStock Id NUMBER IDENTITY 1 1 Name Varchar2 80 NOT NULL 如何才能做到这一点 正如 Orb