zoukankan      html  css  js  c++  java
  • Oracle 给表添加主键和使ID自增、触发器、创建结构一样的表

    1、关于主键:在建表时指定primary key字句即可:
    create table test(
    id number(6) primary key,
    name varchar2(30)
    );
    如果是对于已经建好的表,想增加主键约束,则类似语法:
    alter table test add constraint pk_id primary key(id);
    其中add constraint 和 primary key是关键字,pk_id是主键名称,自定义的额,只要不重复即可。

    2、关于id自增功能,也很简单,而且比较灵活。
    (1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。语法:
    CREATE sequence 序列名
    [INCREMENT by n] --每次加几
    [start with n] --序列从几开始
    [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
    比如CREATE sequence s_test start with 1 increment by 1; --就是建立了额一个从1开始每次加1的序列。
    访问序列时,用 序列名称.nextval的语法。

    比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
    insert into test values (s_test.nextval,'张三');

    当然,你也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。



    3、创建自增触发器

    create or replace trigger TRI_TM_USER

    before insert on TM_USER

    for each row when (new.id is=0)   --when (new.id is=0) 不需要

    begin

    select SE_TM_USER.nextval into :new.id from dual;

    end ;

    //一般情况下会直接在程序里去调用序列,因为数据量太大的话,对表逐行扫描的话会影响性能


      带有自增触发器的插入:

    TM_USER(ID,NAME,Constraint PRI_TM_USER PRIMARY KEY(ID) )

     

    INSERT INTO TM_USER(NAME) VALUES ('NO id');

    INSERT INTO TM_USER(ID,NAME) VALUES (1, 'id no use');

     

    ID NAME
    ---------- --------------------
    1 NO id
    2 id no use




    4、创建结构一样的表

    //创建与原表结构一样的表(不带数据)
    CREATE TABLE TP_STUDENT_BACKUP AS SELECT * FROM TP_STUDENT WHERE 1=0;
    //创建与原表结构一样的表(带数据)
    CREATE TABLE TP_STUDENT_BACKUP AS SELECT * FROM TP_STUDENT WHERE 1=1;

  • 相关阅读:
    Top 10 Product Manager Skills To Boost Your Resume In 2021
    大数据知识梳理
    B端产品如何设计权限系统?
    华三盒式交换机MAC、ARP、Route性能表项参数查询
    中了传说中的挖矿病毒
    SqlServer 2019 事务日志传送
    docker中生成的pdf中文是方框的解决方案
    The Live Editor is unable to run in the current system configuration
    2021 面试题大纲
    五分钟搞定Docker安装ElasticSearch
  • 原文地址:https://www.cnblogs.com/adolphyang/p/4673605.html
Copyright © 2011-2022 走看看