精华内容
下载资源
问答
  • ORACLE实现表中某列自增ID功能
    2021-05-06 00:37:24

    一、建立好相关的表如:tb_test,准备实现自增ID列的数据类型需要注意一下,一般将其设为number类型

    二、建立序列,用以提取递增数值

    CREATE SEQUENCE ATCODEV.SEQ_TMPSEQ

    START WITH 1

    INCREMENT BY 1

    MINVALUE 1

    MAXVALUE 999999999999999999999999999

    NOCACHE

    NOCYCLE

    NOORDER

    三、建立表的触发器,以实现在插入数据时使用序列进行递增ID的赋值

    CREATE OR REPLACE TRIGGER DATAFETCHDEV.tg_tb_test

    BEFORE INSERT

    ON ATCODEV.TB_TEST

    REFERENCING NEW AS New OLD AS Old

    FOR EACH ROW

    DECLARE

    tmpVar NUMBER;

    BEGIN

    SELECT SEQ_TMPSEQ.NEXTVAL INTO tmpVar FROM dual;

    :NEW.ID := tmpVar;

    END tg_tb_test;

    更多相关内容
  • 切换到目录 F:\esesarch\es684-20220311\elasticsearch-6.8.4\bin,运行 elasticsearch-sql-cli.bat 此时索引 zyzkwjj 中 还没有 rownum2 2.postman请求如下图 上图中的 "lang":"myscript" 即对应 类 ...

    一.使用java编写elasticsearch 自定义插件,对应的elasticsearch版本为6.8.4,以下代码用到三个类

    com.suntown.UserScriptEnginePlugin、com.suntown.MyExpertScriptEngine、com.suntown.UserUpdateFactory

    package com.suntown;
    
    
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.plugins.Plugin;
    import org.elasticsearch.plugins.ScriptPlugin;
    import org.elasticsearch.script.ScriptContext;
    import org.elasticsearch.script.ScriptEngine;
    
    import java.text.SimpleDateFormat;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Date;
    import java.util.List;
    
    public class UserScriptEnginePlugin extends Plugin implements ScriptPlugin{
        @Override
        public ScriptEngine getScriptEngine(Settings settings, Collection<ScriptContext<?>> contexts){
            return new MyExpertScriptEngine();
        }
    
    
    }
    
    package com.suntown;
    
    import org.elasticsearch.script.ScoreScript;
    import org.elasticsearch.script.ScriptContext;
    import org.elasticsearch.script.ScriptEngine;
    import org.elasticsearch.script.UpdateScript;
    
    import java.util.Map;
    import java.util.Set;
    
    public class MyExpertScriptEngine implements ScriptEngine{
    
        @Override
        public String getType() {
            return "myscript";
        }
    
        @Override
        public <FactoryType> FactoryType compile(String scriptName, String scriptSource, ScriptContext<FactoryType> scriptContext, Map<String, String> map) {
            UpdateScript.Factory factory = new UserUpdateFactory(scriptName,scriptSource);
            return scriptContext.factoryClazz.cast(factory);
        }
    
        @Override
        public void close() {
            // optionally close resources
        }
    
    
    }
    

    package com.suntown;
    
    import org.elasticsearch.script.UpdateScript;
    
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.PrintStream;
    import java.util.HashMap;
    import java.util.Map;
    
    public class UserUpdateFactory implements UpdateScript.Factory{
        PrintStream ps = null;
    
        static int counter = 0;
        private String scriptName;
        private String scriptSource;
        private Map<String,String> globalMap = new HashMap<>();
    
        public UserUpdateFactory(String _scriptName,String _scriptSource){
            this.scriptName = _scriptName;
            this.scriptSource = _scriptSource;
    
            String userdir = System.getProperty("user.dir");
            try{
                ps = new PrintStream(new FileOutputStream(userdir + "\\logs\\update.log",true));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            engine.put("ps",ps);
            engine.put("userdir",userdir);
        }
    
        ScriptEngineManager sem = new ScriptEngineManager();
        ScriptEngine engine = sem.getEngineByName("javascript");
    
        @Override
        public UpdateScript newInstance(Map<String, Object> params, Map<String, Object> ctx){
            counter++;
            return new UpdateScript(params,ctx){
    
                @Override
                public void execute() {
                    java.util.HashMap hashMap = (java.util.HashMap)ctx.get("_source");
                    engine.put("owner",UserUpdateFactory.this);
                    engine.put("row",hashMap);
                    engine.put("rownum",counter);
                    engine.put("thread",Thread.currentThread().getId());
                    try{
                        engine.eval(UserUpdateFactory.this.scriptSource);
                    } catch (ScriptException e) {
                        e.printStackTrace();
                    }
                }
            };
        }
    }

    将java代码编译后直接打包成普通的jar包,可以使用命令行

    jar cvf es-user-scriptengine.jar

    二.在elasticsearch中部署插件

    1、切换到elasticsearch根目录,如 F:\esesarch\es684-20220311\elasticsearch-6.8.4

    2、再切换到目录 F:\esesarch\es684-20220311\elasticsearch-6.8.4\modules 并新建目录 es-user-scriptengine

    3、将 文件 es-user-scriptengine.jar 复制到 目录 F:\esesarch\es684-20220311\elasticsearch-6.8.4\modules\下 并新建配置文件 plugin-descriptor.properties,如下图所示

     

    plugin-descriptor.properties 文件可从modules 目录下的其它插件子目录下拷贝过来进行修改,

    主要修改上图中classname=com.suntown.UserScriptEnginePlugin  这个类就是上述 es-user-scriptengine.jar 中的类

    修改完成之后、重启elasticsearch服务

    三.使用postman测试插件功能

    1.切换到目录 F:\esesarch\es684-20220311\elasticsearch-6.8.4\bin,运行 elasticsearch-sql-cli.bat

    此时索引 zyzkwjj 中 还没有 列 rownum2

    2.postman请求如下图

    上图中的 "lang":"myscript" 即对应 类 com.suntown.MyExpertScriptEngine中getType()方法的返回值

     

    3. 再使用 elasticsearch-sql-cli 查看索引zyzkwjj中的rownum2字段

    发现rownum2确实更新成了从1开始递增的自增里额。

     

     

    展开全文
  • 在postgresql中,设置已存在的某(num)值自增,可以用以下方法: //将表tb按name排序,利用row_number() over()查询序号并将该命名为rownum,创建新表tb1并将结果保存到该表中 create table tb1 as (select *, ...

      在postgresql中,设置已存在的某列(num)值自增,可以用以下方法:

    //将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
    create table tb1 as (select *, row_number() over(order by name) as rownum from tb); 
    //根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中
    update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name);
    //判断表tb1的存在并删除表
    drop table if exists tb1;
    

      在postgresql中,循环设置已存在的某列(num)值为0-9,可以用以下方法:

    //将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
    create table tb1 as (select *, row_number() over(order by name) as rownum from tb); 
    //根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中,由于为0-9循环自增,则%10
    update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name) % 10;
    //判断表tb1的存在并删除表
    drop table if exists tb1;
    

      参考内容为https://zhidao.baidu.com/question/390932023437481925.html的最佳答案

    其它:附录一个postgresql循环的写法(与上文无关)

     do $$
     declare
     v_idx integer :=0;
     begin
       while v_idx < 10 loop
         update tb set num = v_idx;
         v_idx = v_idx + 1;
       end loop;
    end $$;
    
    展开全文
  • 根据现有表创建新表: CREATE TABLE "test04" AS ( select * from testdemo); 修改数据表名: ...新增字段: ALTER TABLE test04 ADD gid1_type integer; 删除字段: ALTER...

    根据现有表创建新表:

    CREATE TABLE "test04" AS ( select * from testdemo);

    修改数据表名:

    alter table table_name(表名) rename to new_table_name(新表名)

    新增列字段:

    ALTER TABLE test04 ADD gid1_type integer;

    删除列字段:

    ALTER TABLE test04 DROP COLUMN gid1_type;

    修改列字段名称:

    alter table test05 RENAME "gid" TO "id";

    修改列字段类型:

    ALTER TABLE test05 ALTER COLUMN "gid" TYPE datatype;

    特殊的修改为integer:

    alter table table_name(表名)  alter column 字段名 type 新字段类型  using to_number(字段名,'9')

    更新字段数据:

    update test05 set "gid1_type" = 0 where ("组分类型1" = '消防栓') or ("组分类型1" = '水表') or ("组分类型1" = '节点');

    在postgresql中,设置已存在的某列(num)值自增:

    //将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
    create table tb1 as (select *, row_number() over(order by name) as rownum from tb); 
    //根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中
    update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name);
    //判断表tb1的存在并删除表
    drop table if exists tb1;
    

    在postgresql中,循环设置已存在的某列(num)值为0-9:

    //将表tb按name排序,利用row_number() over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
    create table tb1 as (select *, row_number() over(order by name) as rownum from tb); 
    //根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中,由于为0-9循环自增,则%10
    update tb set num=(select tb1.rownum from tb1 where tb.name = tb1.name) % 10;
    //判断表tb1的存在并删除表
    drop table if exists tb1;

     

    展开全文
  • SQL Server 平台修改自增列值 由于之前处理过sql server数据库的迁移工作,尝试过其自增列值的变更,但是通过SQL 语句修改自增列值,是严格不允许的,直接报错(无法更新标识列 ‘自增列名称‘)。sql server我测试...
  • 设置自增后insert写法:自增列数据输入0或null即可,如: insert pics values( 0 ,"wugui","pic/s",0,0,"2018-05-26","ss","ss"); insert pics values( null ,"wugui","pic/s",0,0,"2018-05-26","ss","ss");...
  • 主要介绍了重置MySQL中表中自增列的初始的实现方法的相关资料,需要的朋友可以参考下
  • 标识自增

    2021-12-30 22:18:40
    又称为自增长,可以手动插入,有系统提供默认的序列。 特点: 标识一定是在主键上吗?不一定,但要求是一个 key 一个表中只能有一个标识 标识的类型只能是数值型:int、float、double 标识可以通过...
  • 在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0。在MSSQL中是这样完成的: 代码如下: string sql;sql = ” set identity_insert dbo.AppUsers on ” + ” insert dbo....
  • oracle 想让新增的列自增的方法

    千次阅读 2018-10-15 14:34:24
    序列中设置起始,步长,触发器中赋值 insert into table1(ztid, dddyflmc, CKID, bz, ztflag, cuser, uuser, CDATE, UDATE, dddyfzid ) select ztid, dddyflmc, 5, bz, ztflag, cuser, uuser, TO_DA...
  • 在mysql中很多朋友都认为字段为AUTO_INCREMENT类型自增ID是无法修改,其实这样理解是错误的,下面介绍mysql自增ID的起始修改与设置方法。通常的设置自增字段的方法:创建表格时添加: 代码如下:create table ...
  • 主要介绍了python mysql自增字段AUTO_INCREMENT的修改方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • SQL Server 中调整自增字段的当前初始
  • MySQL查询结果添加固定自增列

    千次阅读 2019-04-06 12:43:31
    MySQL添加固定 select 固定 as 列名 from ... 示例: select * ,'男' as sex from student;//此时sex变为字符串类型(varchar),MySQL自动识别类型 select * ,1 as sex from student;//此时sex为int类型 ...
  • sqlserver标识规范修改当前 自增列标识 有时候,我们需要查看或修改SQL Server 中的identity(自增列)的目前种子,可以用如下命令来实现 查看某个表中的自增列当前的:DBCC CHECKIDENT (TableName) 修改...
  • mysql更新自增序列

    千次阅读 2020-07-23 16:52:11
      如果需要将mysql表中某一(非主键)的设置成自增序列,应该怎样操作呢? 比如,我需要将下表中的stu_age字段的设置成20,21,21…这样的递增序列: CREATE TABLE students ( cust_id int NOT NULL AUTO_...
  • SQL Server 平台修改自增列值由于之前处理过sql server数据库的迁移工作,尝试过其自增列值的变更,但是通过SQL 语句修改自增列值,是严格不允许的,直接报错(无法更新标识列 ’自增列名称‘)。sql server我测试是...
  • Mysql列自增是怎么实现的

    千次阅读 2020-01-02 22:08:16
    在执行插入语句时在表级别加一个auto-inc锁,然后为每条待插入记录的auto-increment修饰的分配递增的,语句执行结束后,再把auto-inc锁释放掉。一个事务再持有auto-inc锁的过程中,其他事务的插入语句都要被阻塞...
  • def inc(): # 从0开始 i = -1 def f(): nonlocal i i+=1 return i return f from collections import defaultdict a = defaultdict(int()) b = defaultdict(int())
  • MYSQL 自增列

    2021-10-11 15:40:54
    自增列: 若主键是整数类型,则同时可以声明此上的为“自动增长” 若查如数据时未指定或指定为“NULL”;则默认值就会生成一个在当前最大基础上+1的下一个整数 CREATE TABLE user( uid INT PRIMARY ...
  • 1、创建一个序列,然后再需要自增的字段使用它 drop sequence seq_stu create sequence seq_stu start with 22 Increment by 1 maxvalue 999 nocache nocycle; --这是最详细的一种序列的创建,指定了序列从22开始,...
  • 1. 选中要填充的区域 ... ...4.移动方向键可以选取一个元素,然后输入运算符,然后在移动方向键选择另一个元素 ...** 这个第2例有一个开始,然后余下的数据是由其前一项加上左边的得到的。 ...
  • MySQL--自增列学习

    2021-01-19 13:49:33
    ##=====================================================================================##在数据库表设计中会纠结于”自然键”和”代理键”的选择...而比较常见两种代理键为自增列(auto incremnet)和全局唯一标...
  • 设置MySQL自增列自增初值

    千次阅读 2017-11-07 09:41:07
    在许多类似的项目中,我们可能会把以前的数据库直接复制到新的项目中,但是有些表中的自增列都很大,后面插入数据会在此基础上递增,那么如果来设置自增的初值呢?
  • alter table 表名 AUTO_INCREMENT = 这里写起始值; 例如:给用户表的自增列字段设置起始为20000 alter table user AUTO_INCREMENT = 20000;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,156
精华内容 34,462
关键字:

列值自增