csjoz11

导航

Hana 通过序列来创建自增

    • sql server
      • IF OBJECT_ID( 'Autotest.SA.CUSTOMER' , 'U' )  is not null
            Drop table Autotest.SA.CUSTOMER;
        CREATE TABLE Autotest.SA.CUSTOMER (
        customer_id  int IDENTITY (1,1)  PRIMARY KEY ,
        c_custkey nVarChar(50)  default '' ,
        c_mktsegment nVarChar(50)  default '' ,
        c_privilege_level  int
        );
      • 使用IDENTITY(m,n)
        • m表示的是初始值,n表示的是每次自动增加的值
        • m和n的值都没有指定,则默认为(1,1)
    • mysql
      • drop table if exists Autotest.CUSTOMER;
        
        CREATE TABLE autotest.CUSTOMER (
        customer_id  int auto_increment  PRIMARY KEY ,
        c_custkey nVarChar(50)  default '' ,
        c_mktsegment nVarChar(50)  default '' ,
        c_privilege_level  int
        );
      • 使用auto_increament

        • 必须指定索引,上面的例子用PRIMARY KEY定义了主键索引
        • 默认自增从1开始  
        • 设置自增的起始值n:  alter table table_name AUTO_INCREMENT=n  
  • Oracle
    • 通过序列+触发器建立自增序列
    • 创建table
    • create table SYSTEM.customer(
      id  int not null PRIMARY KEY ,
      column1  varchar (50)  null ,
      column2  varchar (50)  null
      )
    • 创建序列
    • create sequence seq_perftest
      minvalue 1
      maxvalue 99999999
      start  with 1
      increment  by 1
      cache 50

      drop sequence seq_perftest

        起始值为1,增量为1

    • 创建触发器
    • create or replace trigger "perfest_trig"
          before  insert on SYSTEM.customer
          for each row
      begin
        select seq_perftest.nextval  into :new.id  from dual;
      end ;
    • 验证自增是否生效  insert into system.customer(column1,column2)  values('test1','test2')
    • 用存储过程批量生成数据
    • create procedure system.pro_test(
      init  in number,
      loop_time  in number
      )
      IS
      vars number;
      i  INTEGER ;
      begin
       vars := 0; 
       i := init;
        while vars
      exec system.pro_test (1,100000)
  • Hana
    • 通过序列来创建自增
    • 创建table
    • create table SYSTEM.customer(
      id  int ,
      column1  varchar (50)  null ,
      column2  varchar (50)  null
      );

        

    • 创建序列
    • create sequence system.seq_perftest
      increment  by 1
      maxvalue 99999999
      minvalue 1
      NO CYCLE
      start  with 1;
      
      
      drop sequence seq_perftest;

        

    • 验证自增是否生效  insert into system.customer(id, column1) values(system.seq_perftest.nextval, 'test123')
    • 使用存储过程批量增加数据
    • create procedure system.pro_test(
      i  INTEGER ,
      loop_time  INTEGER
      )
      As
      begin
        For i  in 1 .. loop_time DO
         insert into system.customer(id,column1,column2) values (system.seq_perftest.nextval,( 'test' ||i),( 'test' ||i);
          i := i+1;
        end FOR ;
      end ;
      
      
      
      call system.pro_test(1, 100000)

        

posted on 2022-06-16 17:07  csjoz11  阅读(800)  评论(0编辑  收藏  举报