`

Oracle之新手发现:建立类似SQL Server的自增长字段

阅读更多

一直都是用sql server作为开发数据库,最近因为开发新的项目使用oracle数据库,我才开始学习oracle.
学习了一段时间,发现SQL Server和Oracle还是有这很大的差别。首先,我在SQL Server中用得很顺手的自增长字段就在ORACLE中找不到了,朋友说可以用序列可以实现,于是查阅资料,整理出如下示例:


方法一

1.建立测试数据表
CREATE TABLE TEST
(
 ID NUMBER,
 NAME VARCHAR2(20),
 PRIMARY KEY(ID)
);

2.创建序列
CREATE SEQUENCE SEQ_TEST;

3.创建触发器
CREATE OR REPLACE TRIGGER AUTOINCREMENT
BEFORE INSERT ON TEST
FOR EACH ROW
WHEN (NEW.ID IS NULL)
BEGIN
SELECT SEQ_TEST.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/

4.插入数据
INSERT INTO TEST(NAME) VALUES('NAME1');

5.查看插入结果
SELECT * FROM TEST;



方法二


SQL   Server,Sybase:  
  有个identity属性可以让系统自动增1  
  create   table   a  
  (  
  a1   int   identity(1,1),  
  a2   varchar(6)  
  )   
  然后在insert时:  
  insert   into   a   values('hello!'); --不用管a1,系统会自动增1  
   
  Oracle:  
  使用SEQUENCE(序列)可以达到要求  
  create   table   a  
  (  
  a1   int   ,  
  a2   varchar2(6)  
  );  
   
  create   SEQUENCE   seq_a     INCREMENT   BY   1;   
    
  然后在insert时:  
  insert   into   a   values(seq_a.nextval,'hello!'); --seq_a.nextval是该序列的下个值

分享到:
评论

相关推荐

    oracle与SQL server的语法差异总结

    Oracle 和 SQL Server 是两种广泛应用的关系型数据库管理系统,它们在语法和功能上存在一定的差异。以下是对两者主要区别的一些详细说明: 1. **伪列 ROWNUM**: 在Oracle中,ROWNUM是一个伪列,用于获取结果集中...

    oracle自增长与sqlserver一样好用

    总之,无论是Oracle还是SQL Server,都提供了强大的工具和技术来支持自增长字段的需求。了解并掌握这些特性,对于数据库开发者和管理员来说至关重要,能够极大地提升数据管理的效率和系统的可靠性。

    SQL Server 打开或关闭自增长

    在SQL Server中,自增长(IDENTITY)列是一种特殊类型的字段,它会在每次插入新行时自动为该列提供一个唯一的、递增的值。这种功能对于创建序列化的主键非常有用,因为它们确保了数据的唯一性。然而,有时在特定情况...

    Oracle与SQLServer的SQL语法差异总结1

    Oracle 中有序列 sequence 对象,无自动增长列,而 SQL Server 中无序列对象,表中有自动增长列。 Select 语法 Oracle 中的 Select 语法可以将结果集作为表使用,而 SQL Server 中的 Select 语法也可以将结果集...

    从SQL Server 向Oracle迁移的技术实现方案

    总结而言,从SQL Server到Oracle的数据库迁移不仅涉及数据类型转换的细节,还需要对源数据库中的特殊功能如自动增长字段进行等效替代设计,确保目标数据库能够无缝接替原有的数据管理和业务逻辑。这一过程需要细致...

    Flink1.14.4自定义flink-connector-jdbc连接SQLServer和SAP数据库

    Flink1.14.4自定义flink-connector-jdbc连接SQLServer和SAP数据库

    对有自增长字段的表导入数据注意事项

    对有自增长字段的表导入数据注意事项: 1、把自增长字段暂时设置成非自增长的;导入数据成功后,再设置成自增长字段。 2、导出、导入数据时,注意选择文本格式,防止出现乱码、数据转换不成功等情况。 3、对于表中的...

    oracle主键自动增长

    在Oracle数据库中,并没有像MySQL那样的自动增长字段特性,因此在实际应用中,我们常常需要手动实现这一功能。序列(Sequence)是Oracle提供的一种用于生成一系列唯一数值的对象,非常适合用来作为表中的主键值。 #...

    oracle触发器实现主键自动增长

    在Oracle数据库中,实现主键自动增长是一种常见的需求,尤其在设计高并发、大数据量的系统时,确保每个记录都有一个唯一且连续的标识符变得至关重要。本文将深入探讨如何利用Oracle触发器来实现这一功能,同时也会...

    深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    SQL Server中,主键的自动增长与MySQL类似,但使用的是`identity`关键字。例如`id int identity(1,1) primary key not null`。这里的`identity(1,1)`定义了起始值为1,每次递增也为1。同样,当插入记录时,只需要...

    建立oracle带自增长表

    首先,我们需要了解Oracle中的自增长特性是通过序列(Sequences)来实现的,而不是像其他数据库系统(如SQL Server或MySQL)那样直接在表定义中指定。序列是一种数据库对象,它能够按照预设的步长(increment by)...

    oracle自动增长列

    ### Oracle自动增长列知识点 在Oracle数据库中,实现自动增长列的功能主要依赖于`SEQUENCE`对象。通过创建一个序列(SEQUENCE),可以方便地为表中的某列自动生成唯一的值,这对于主键或者需要唯一标识符的场景非常...

    oracle常用SQL语句(汇总版).docx

    Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...

    SQL Server 2005 移植数据库到Oracle 10g

    对于自增长字段(如SQL Server的IDENTITY列),在Oracle中可以使用序列(Sequences)来实现类似功能。 8. **表结构转换** - SQL Server的表结构需要转换为Oracle的语法,包括列类型、索引、约束等。 - 触发器...

    oracle设置主键自动增长

    这里以 `example` 表为例,该表包含四个字段:`ID`(作为主键)、`NAME`、`PHONE` 和 `ADDRESS`。 ```sql CREATE TABLE example ( ID NUMBER(4) NOT NULL PRIMARY KEY, -- 主键,不可为空 NAME VARCHAR(25), -- ...

    oracle中用序列实现自动增长值

    在Oracle数据库系统中,与SQL Server中的`IDENTITY`特性类似,我们可以通过使用序列(Sequences)来实现字段的自动增长值。序列是一种特殊的数据库对象,它可以生成一系列有序的数值,通常用于为表的主键字段提供...

    OracleID自增长

    而在Oracle数据库中,与MySQL不同的是,它并没有提供直接的自增长字段功能。因此,为了实现类似MySQL的自增长特性,我们需要借助于Oracle提供的序列(sequence)和触发器(trigger)来实现这一功能。本文将详细介绍...

    SQLServer,MySQL,Oracle三者的区别.pdf

    《SQLServer,MySQL,Oracle三者的区别》 在IT领域,数据库的选择至关重要,因为它直接影响到系统的性能、稳定性和可扩展性。本文将对比分析Oracle、SQL Server和MySQL这三大主流数据库系统,帮助你了解它们之间的...

    hibernate自动增长字段

    ### Hibernate自动增长字段详解 #### 一、概述 在数据库设计与开发过程中,主键的自动生成是一项重要的功能。Hibernate框架提供了多种灵活的方式来实现主键的自动增长,从而简化了开发人员的工作。本文将详细介绍...

Global site tag (gtag.js) - Google Analytics