精华内容
下载资源
问答
  • Oracle数据库中没有自增字段,我们可以通过创建序列和触发器的方式,间接地实现自增的效果。 举个实例: 1.创建表TEST create table TEST( id number(10) primary key, /*主键,自动增加*/ name varchar2(20),...

    Oracle数据库中没有自增字段,我们可以通过创建序列和触发器的方式,间接地实现自增的效果。

    举个实例:

    1.创建表TEST

    create table TEST(
               id number(10) primary key,   /*主键,自动增加*/
               name varchar2(20),		    /*姓名*/
    		   phone varchar2(20),		    /*电话*/
    		   sex varchar2(10),			/*性别*/
    		   age number(10)				/*年龄*/
               );

    2.创建自增长序列

    create sequence TEST_SEQ
    minvalue 1				-- 最小值
    -- maxvalue 2000		-- 最大值
    nomaxvalue      		-- 不设置最大值 
    start with 1			-- 从1开始计数
    increment by 1			-- 每次增加1
    nocycle					-- 一直累加,不循环
    cache 20;

    注意:根据实际情况 选择配置项。比如:表单中存在一部分原始数据,在创建自增长序列时,可以设置计数起始位置。例如表中存在100条原始数据,那么我们可以设置 start with 101 ,这样自增长就会从101开始。

    3.创建触发器

    create or replace trigger TEST_TR
    before insert on TEST
    for each row
    begin
    select TEST_SEQ.nextval into :new.id from dual;
    end TEST_TR;

            new.id中的id为自增的字段。 根据你自己的表字段自行设置。

    4.测试

    insert into TEST(name,phone,sex,age)  values('张三','18888888888','男',25)
    insert into TEST(name,phone,sex,age)  values('李四','18888888889','男',29)

    结果:

    到这,就可以实现oracle主键自增了。

    希望这篇文章对您的工作有所帮助。

    LAST   一切美好的遇见都是命中注定~!!!

    展开全文
  • 1、给 test_student02 表添加主键的2种方式。   方式一: 在创建表的时候就设置主键。 这种方式,主键名会被系统随机创建。  SQL语句如下所示: create table TEST_STUDENT02 ( ST_ID VARCHAR2(64) ...

     

    表 test_student02 结构

    create table TEST_STUDENT02
    (
      ST_ID       VARCHAR2(64),
      ST_NAME     VARCHAR2(255),
      ST_AGE      NUMBER(3),
      ST_ADDRESS  VARCHAR2(255),
      ST_SEX      VARCHAR2(8),
      ST_STATUS   NUMBER(2),
      CREATE_DATE DATE
    )

     

    1、给 test_student02 表添加主键的2种方式。

     

    方式一:  在创建表的时候就设置主键。这种方式,主键名会被系统随机创建。 SQL语句如下所示:

    create table TEST_STUDENT02
    (
      ST_ID       VARCHAR2(64) primary key,
      ST_NAME     VARCHAR2(255),
      ST_AGE      NUMBER(3),
      ST_ADDRESS  VARCHAR2(255),
      ST_SEX      VARCHAR2(8),
      ST_STATUS   NUMBER(2),
      CREATE_DATE DATE
    )

     

    主键名可参见如下截图所示:

     

     

    方式二: 通过 ALTER 语句给 test_student02 表设置主键。 这种方式,主键名可自定义。

     

    
    -- 设置主键
    alter table test_student02 add constraint pk_test_student02 primary key(st_id);
    


    主键名可参见如下截图所示:

     

    2、删除表主键  

     

         SQL语句如下所示:

    
    -- 删除主键
    ALTER TABLE test_student02 DROP CONSTRAINT pk_test_student02; 
    
    

     

     

    展开全文
  • Oracle数据库联合主键

    2021-05-04 05:55:02
    1、定义:主键:在Oracle中,主键指能唯一标识一条记录的单个数据表列或联合的数据表列(联合主键|复合主键)。...用来通过多个字段值去确定本条数据的唯一性3、规范:在Oracle数据库中,联合主键的列不能超...

    1、定义:

    主键:在Oracle中,主键指能唯一标识一条记录的单个数据表列或联合的数据表列(联合主键|复合主键)。主键用到的数据                   表列数据不能包含空值。而且,一张表只能包含一个主键。

    2、作用:

    数据表的联合主键组合不允许重复,即同一行的数据,联合主键所属的列数据组合不能相同。

    用来通过多个字段值去确定本条数据的唯一性

    3、规范:

    在Oracle数据库中,联合主键的列不能超过32个。主键可以在创建表时定义或者通过ALTER TABLE语法定义

    4、使用:

    1)、创建表时添加联合主键:示例:

    create table test

    (sno char(12),

    name char(4),

    CONSTRAINT PK_test PRIMARY KEY (sno,name) -- 联合主键

    );

    2)创建表之后追加联合主键:

    alter table 表名 add constraint pk_tab2 primary key (sno,name);

    5、禁用主键

    语法:

    ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;

    示例:

    alter table tb_employees disable constraint tb_employees_pk;

    6、启用主键:

    语法:

    ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

    示例:

    alter table tb_employees enable constraint tb_employees_pk;

    6、删除主键:

    语法:

    ALTER TABLE table_name DROP CONSTRAINT constraint_name;

    示例:

    alter table tb_employees drop constraint tb_employees_pk;

    alter table tb_departments drop constraint tb_departments_pk;

    alter table TB_PK_EXAMPLE drop constraint TB_PK_EXAMPLE_PK;

    alter table TB_SUPPLIER_EX drop constraint TB_SUPPLIER_EX_PK;

    展开全文
  • oracle序列详解和建立自增主键cssOracle序列主键序列: 是oacle提供的用于产生一系列惟一数字的数据库对象。l 自动提供惟一的数值l 共享对象l 主要用于提供主键值l 将序列值装入内存能够提升访问效率web1.首先建立...

    oracle序列详解和建立自增主键css

    Oracle序列主键

    序列: 是oacle提供的用于产生一系列惟一数字的数据库对象。

    l 自动提供惟一的数值

    l 共享对象

    l 主要用于提供主键值

    l 将序列值装入内存能够提升访问效率web

    1.首先建立序列,Oracle序列的语法格式为:sql

    CREATE SEQUENCE 序列名

    [INCREMENT BY n]

    [START WITH n]

    [{MAXVALUE/ MINVALUEn|NOMAXVALUE}]

    [{CYCLE|NOCYCLE}]

    [{CACHE n|NOCACHE}];

    1)INCREMENT BY用于定义序列的步长,若是省略,则默认为1,

    若是出现负值,则表明Oracle序列的值是按照此步长递减的。

    2)START WITH 定义序列的初始值(即产生的第一个值),默认为1。

    3)MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,表明没有最大值定义,

    这时对于递增Oracle序列,系统可以产生的最大值是10的27次方;对于递减序列,最大值是-1。

    4)MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,

    表明没有最小值定义,这时对于递减序列,系统可以产生的最小值是?10的26次方;对于递增序列,最小值是1。

    5)CYCLE 和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE表明循环,NOCYCLE表明不循环。 若是循环,则当递增序列达到最大值时,循环到最小值;对于递减序列达到最小值时,循环到最大值。若是不循环,达到限制值后,继续产生新值就会发生错误。

    6)CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。

    对序列进行内存缓冲,能够改善序列的性能。数据库

    2.删除Oracle序列的语法是DROP SEQUENCE 序列名;oracle

    使用序列会产生裂缝

    l 序列在下列状况下出现裂缝:

    • 回滚

    • 系统异常svg

    实例应用:性能

    1。先sqlplus登陆了:

    SQL> conn scott/tiger;

    2。建表:

    drop table users ;测试

    create table users(

    id number(6) ,

    name varchar2(30),

    constraint pk_id primary key(id)

    );

    3。建序列:

    create sequence aq1

    start with 1

    increment by 1

    minvalue 1

    maxvalue 9999999

    nocycle

    nocache

    noorder;

    /或者

    drop sequence sq1;

    create sequence sq1;

    4。建触发器:spa

    create or replace trigger pn_trigger

    before insert on users

    for each row

    begin

    select sq1.nextval into:new.id from sys.dual;

    end;code

    5。好了,insert一条记录测试一下喽。。。。

    insert into users( name) values(‘zhsan’);

    select * from users;

    建立触发器

    create or replace trigger 触发器名

    before insert on 表名

    for each row

    begin

    select 序列名.nextval into:new.主键 from dual;

    end 触发器名;

    展开全文
  • Oracle数据库设置主键自增长策略

    千次阅读 2019-04-23 16:53:15
    其次为我们SOFTCLASS表的ID添加主键自增长策略: CREATE SEQUENCE SOFTCLASS_sequence INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 10; 测试结果: INSERT INTO SOFTCLASS VALUES  ( SOFTCLASS_sequence....
  • oracle数据库中表添加主键约束

    万次阅读 2017-10-04 15:22:18
    –创建完成后再添加约束 )—–方法一:表创建的同时,添加主键约束语法:create table 表名 ( 列名1 数据类型及长度 constraint 主键名称(一般主键名称为”PK_”开头) primary key, 列名2 数据类型及长度 not ...
  • Oracle数据库设置主键自增长详情

    千次阅读 2018-10-24 22:25:25
    1.创建一张操作表 代码创建过程: create table USERTEST ( id NUMBER not null, name VARCHAR2(50), sex VARCHAR2(10) ) alter table USERTEST add constraint 主键 primary key (ID) using index tablespace USERS...
  • oracle 数据库创建表的主键

    千次阅读 2020-12-01 14:19:40
    建表后添加 create table tmp_t10 ( c0 varchar2(100) primary key, c1 varchar2(100) ) ; 方法一 -- Create/Recreate primary, unique and foreign key constraints alter table tmp_t10 add constraint pk_tmp_t...
  • 一、PowerDesigner设计数据库导出SQL有时会出现表和视图不存在问题处理: 如果你使用的PowerDesigner设计的数据库在导出SQL的时候一个坑不得不踩,需要你的PowerDesigner设置如下: 1. 点击DataBase 2. 选择 ...
  • 这种方式的效果alter的方式是一样的 以上内容就是来自于小编为大家分享的关于Oracle如何添加主键约束方面的知识,同时也希望小编所为大家分享的知识能够为大家起到帮助,那么如果大家还想要了解更多关于其他方面的...
  • oracle对表添加主键约束的sql语句

    万次阅读 2017-02-27 08:57:46
    –创建主外键(可以在创建表的同时添加主外键约束,也可以  ...—–方法一:表创建的同时,添加主键约束 语法: create table 表名  (  列名1 数据类型及长度 constraint 主键名称(一般主键名称为”
  • 项目使用了 oracle 数据库,在一张设置了主键的表上,主键数据竟然还能插入重复的数据。主键的设置包含了唯一键,那么到底是怎么出现这样的情况呢? 原因分析: 数据吧的主键虽然设置了,但是没有启动,这才导致可以...
  • 新建id字段(这个就不用说了)因为已经使用的表中有一些旧数据了,在不能删除的情况下必须批量添加id,方法是:update T_TEST set I_ID=rownum commit;这样 所有旧数据就会按顺序加上I_ID,加入末尾的I_ID为100. ...
  • oracle添加主键的四种方法:

    千次阅读 2020-08-25 11:54:13
    oracle添加主键的四种方法: 原创 Oracle 作者:ultradb 时间:2016-11-02 19:40:22 2827 0 oracle添加主键的四种方法: 列级,表级建立主键 drop table constraint_test; 1.create table constraint_test ( name_id ...
  • MySQL建表时必须有一个主键(PRIMARY KEY), 并且每条主键内容...例如某张表中的”id”作为主键,则mybatis中添加数据的写法可以是: <insert id="saveSmartUser" parameterType="com.sun.rep...
  • oracle添加主键 primary key

    千次阅读 2021-05-03 04:14:48
    根据数据库三范式就是每个表建议要有主键,每个字段不可再分,表与之间不存在部分依赖数据库的优化首先考虑的也是主键主键会在对应的字段加唯一约束、加not null,建 索引怎么为表加主键呢1,建表同时SQL>...
  • 一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 ... 三、Oracle+Mybatis 中 插值并返回主键 SELECT 【序列名】.CURRVAL as id from DUAL insert into t_user (id,name) values (null,#{name,jdbcType=VARCHAR})
  • 2 给表增加一类,并做主键alter table T_DHK_SJ add (DHKBH number(20));alter table T_DHK_SJ add constraint pk_dhk_dhkbh primary key(dhkbh);3 增加一个sequencecreate sequence SEQ_T_DHK_SJmi...
  • Oracle 数据库添加序列

    2021-04-30 07:58:29
    简述为数据表添加序列实现插入数据时可获取自增主键。定义序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。其主要用途是生成表的主键值...
  • Oracle数据库实现ID主键自增

    千次阅读 2019-06-05 10:38:13
    1.创建自增序列 CREATE SEQUENCE "***"."DEMO_ID_ADD" INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999 START WITH 1; 2.创建触发器 ...CREATE OR REPLACE TRIGGER "***"."DEMO_ID_Tigger" BEFORE INSERT ON "***"....
  • Oracle数据库表中设置主键、索引

    千次阅读 2018-04-27 15:15:39
    原文链接:http://blog.itpub.net/30557618/viewspace-1833882/1、当ID值不存在重复可以设置为主键,同时主键也是索引的一种个【主键索引】;2、设置索引目的为提高查询速度,当某列常被作为查询条件同时可能存在重复...
  • 我有一些没有主键的列,并且要添加一个主键列.NAME Age-------------Peter 45Bob 25John 56Peter 45这很好,但我的客户使用数据库用户没有权限添加序列或触发器.我想阻止联系数十名DBA管理员来更改用户权限或运行我的...
  • 1:近期项目上把原本使用的mysql数据库换成了oracle数据库,orm使用的mybatis。在数据保存方面,一直使用mysql的主键自增。替换成oracle后,需要在代码成面处理这个问题。2:网上很多说法是使用oracle的触发器。这种...
  • Oracle数据库序列详解

    2020-12-23 06:54:51
    但是oracle中没有设置自增的方法,一般情况我们会使用序列和触发器来实现主键自增的功能。下面这面文章主要介绍序列。一、什么是序列序列: Sequence 是oracle提供的用于产生一系列唯一数字的数据库对象。由于oracle....
  • 背景 项目中往表中插入数据时,需要有物理主键,项目使用的是oracle数据,...可以通过序列来添加主键,主要过程如下: 创建oracle序列 配置mybatis-plus主键策略 /** * 使用序列生成指定主键 * * @return */ .
  • Oracle 添加主键和索引

    千次阅读 2021-05-08 00:35:31
    数据的主键和索引一般情况下都是必须的,特别是表有大量数据的时候,索引和主键更是必不可少,这样可以提供数据的查询效率;一、创建表的同时创建主键约束(1)无命名create table student (studentid int primary key...
  • oracle数据库添加索引

    2020-08-11 10:25:15
    第一步先查看原先的索引(如果没创建过的话应该默认有一条主键的索引) select index_name from all_indexes where table_name = '你的表名'; 第二步开始创建索引 create index索引名 on picture (字段名); ...
  • oracle添加删除主键的方法

    千次阅读 2021-05-04 09:57:33
    1、创建表的同时创建主键约束(1)无命名sql;">create table student (studentid int primary key not null,studentname varchar(8),age int);(2)有命名sql;">create table students (studentid int,age int,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,373
精华内容 24,549
关键字:

oracle数据库添加主键