精华内容
下载资源
问答
  • 二、 oracle获取主键,索引,元信息 1.primary key和unique select c.owner,c.table_name,c.column_name,a.constraint_type from all_constraints a,all_cons_columns c where a.constraint_name=c.constraint_name...

    二、 oracle获取主键,索引,元信息


    1.primary key和unique

    select c.owner,c.table_name,c.column_name,a.constraint_type
    from all_constraints a,all_cons_columns c 
    where  a.constraint_name=c.constraint_name and a.owner=c.owner and (a.constraint_type='P' or a.constraint_type='U' )
    		 and  c.owner='xx' and c.table_name='xx'
    

    2.所有索引

    select * from  all_indexes i,all_ind_columns col 
    where i.index_name=col.index_name and i.table_owner=col.table_owner and i.table_n
    ame=col.table_name and col.table_name='xxx'
    

    3.除主键和唯一索引外的其他索引

    select *  from all_indexes i 
    LEFT JOIN all_ind_columns col on i.index_name=col.index_name and i.table_owner=col.table_owner 
    LEFT JOIN all_constraints s ON s.index_name=i.index_name and i.table_owner=s.owner
    where col.table_name='xxx'
    

    4.表元数据信息获取

    select owner,table_name,column_name,data_type,data_length,data_precision,data_scale,char_col_decl_length,char_length,char_used
    	from all_tab_columns 
    	where table_name='xx'	
    

    说明:
    4.1 char/varchar类型取char_length
    4.2 number类型长度取data_precision,精度取data_scale
    4.3 raw类型取data_length

    展开全文
  • MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键   >>>>>>>>>>>>>>>>&...

    MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键

     

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2016年8月24日 10:39:04 星期三

    http://fanshuyao.iteye.com/

     

    一、问题描述

     

    由于Oracle是不支持自动生成主键的,不像Sql或者Mysql能自动生成。

     

     

    二、解决方案

     

    使用Oracle的序列生成主键。

     

    1、首先在Oracle数据库创建序列:

     

    create sequence SEQ_T_OPERATION_LOG
    minvalue 1
    maxvalue 9999999999999999999999999999
    start with 1
    increment by 1
    cache 20;

     

     

    2、在Mybatis中使用序列,order必须为"BEFORE" ,keyProperty对应Java实体的主键属性,

    SEQ_T_OPERATION_LOG.nextval 为第1步创建的序列

     

    <selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="logId">
            SELECT SEQ_T_OPERATION_LOG.nextval AS logId FROM dual
    </selectKey>

     

    完整示例(一个保存操作):

     

    <insert id="save" parameterType="com.chinagas.org.beans.OperationLog" >
      	<selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="logId">
            SELECT SEQ_T_OPERATION_LOG.nextval AS logId FROM dual
    	</selectKey>
        insert into T_OPERATION_LOG (LOG_ID, LOG_NAME, LOG_TYPE, 
          TABLE_NAME, TABLE_NAME_VALUE, TABLE_ID, IP_ADDRESS, MAC_ADDRESS, 
          CREATE_BY, CREATE_BY_NAME, CREATE_TIME, 
          MODIFY_BY, MODIFY_BY_NAME, MODIFY_TIME, 
          REMARK, CONTENT_AFTER_OPERATION
          )
        values (#{logId,jdbcType=DECIMAL}, #{logName,jdbcType=VARCHAR}, #{logType,jdbcType=DECIMAL}, 
          #{tableName,jdbcType=VARCHAR}, #{tableNameValue,jdbcType=VARCHAR}, #{tableId,jdbcType=DECIMAL}, #{ipAddress,jdbcType=VARCHAR}, #{macAddress,jdbcType=VARCHAR}, 
          #{createBy,jdbcType=DECIMAL}, #{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, 
          #{modifyBy,jdbcType=DECIMAL}, #{modifyByName,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP}, 
          #{remark,jdbcType=VARCHAR}, #{contentAfterOperation,jdbcType=CLOB}
          )
      </insert>

     

    如果数据库支持自动生成主键的,可以参考此文章:

    http://fanshuyao.iteye.com/blog/2245853

     

     

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2016年8月24日 10:39:04 星期三

    http://fanshuyao.iteye.com/

     

    展开全文
  • 通过Oracle系统表获取主键

    千次阅读 2020-04-20 15:30:12
    场景:需要将Oracle的数据抽取至kudu中,首先需要在kudu中对应建立与Oracle数据库对应的表。 使用kettle工具设计任务... 查询Oracle主键的SQL语句 SELECT col.column_name from all_constraints con,all_cons_colum...

    场景:需要将Oracle的数据抽取至kudu中,首先需要在kudu中对应建立与Oracle数据库对应的表。

    使用kettle工具设计任务。

    1. 在表输入组件中,连接Oracle数据库后,SQL语句结尾处不加“;”,否则执行语句时报错。
    2. 查询Oracle主键的SQL语句

    SELECT  col.column_name
    from
     all_constraints con,all_cons_columns col
    where
     con.constraint_name=col.constraint_name and con.constraint_type='P'
    and col.table_name='TABLE_NAME' and col.owner='DB_NAME' AND con.owner=' DB_NAME'

    其中,all_constraints和all_cons_columns表是Oracle的系统表,其中all_cons_columns表中字段包含表用户、表名和主键名称。all_constraints包含表的用户、约束名、约束名称等。
    值得注意的是user_constraints和user_cons_columns表示当前用户的信息,all_constraints和all_cons_columns表示的是所有用户的表信息。
    如果只是查询当前用户的表主键信息,SQL语句可以简化为:
    Select  col.column_name
    from
     all_constraints con,all_cons_columns col
    where
     con.constraint_name=col.constraint_name and con.constraint_type='P'
     and col.table_name='TABLE_NAME'
     

    展开全文
  • mysql <!-- parameterType:参数类型,可以省略, 获取自增主键的值: mysql支持自增主键,自增主键值的获取,mybatis也是利用statement....使用自增主键获取主键值策略 keyProperty;指定对应的主键属性...

    mysql

    <!-- parameterType:参数类型,可以省略, 
        获取自增主键的值:
            mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys();
            useGeneratedKeys="true";使用自增主键获取主键值策略
            keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性
        -->
        <insert id="addEmp" parameterType="com.atguigu.mybatis.bean.Employee"
            useGeneratedKeys="true" keyProperty="id" databaseId="mysql">
            insert into tbl_employee(last_name,email,gender) 
            values(#{lastName},#{email},#{gender})
        </insert>

    Oracle

    <!-- 
        获取非自增主键的值:
            Oracle不支持自增;Oracle使用序列来模拟自增;
            每次插入的数据的主键是从序列中拿到的值;如何获取到这个值;
         -->
        <insert id="addEmp" databaseId="oracle">
            <!-- 
            keyProperty:查出的主键值封装给javaBean的哪个属性
            order="BEFORE":当前sql在插入sql之前运行
                   AFTER:当前sql在插入sql之后运行
            resultType:查出的数据的返回值类型
            
            BEFORE运行顺序:
                先运行selectKey查询id的sql;查出id值封装给javaBean的id属性
                在运行插入的sql;就可以取出id属性对应的值
            AFTER运行顺序:
                先运行插入的sql(从序列中取出新值作为id);
                再运行selectKey查询id的sql;
             -->
            <selectKey keyProperty="id" order="BEFORE" resultType="Integer">
                <!-- 编写查询主键的sql语句 -->
                <!-- BEFORE-->
                select EMPLOYEES_SEQ.nextval from dual 
                <!-- AFTER:
                 select EMPLOYEES_SEQ.currval from dual -->
            </selectKey>

    展开全文
  • 获取表的主键列名 SQL select*fromuser_cons_columnswhereconstraint_name=(selectconstraint_namefromuser_constraintswheretable_name='BST_FAVORITE'an...
  • 使用mybatis插入数据返回的主键和数据库中的不一致,实体类映射的主键自增1,数据库主键自增2,例如主键的当前值为1,那么下一条数据的主键应该为2,但是执行下列的配置文件对oracle数据库执行insert语句后,实体类...
  • mybatis插入数据获取Oracle主键

    千次阅读 2018-09-06 10:54:48
    在开发中经常会遇见插入一条记录并获取主键的情况,Oracle和MySQL的获取方式不一样 正文: Oracle中没有主键自增这个选项,只能通过序列加触发器来实现,之前有写过-----Oracle实现主键自增 现在主键可以自增了,...
  • -- 获取某个数据库下所有表注释,TABLE_SCHEMA即数据库名 select table_schema,table_name,table_comment from information_schema.TABLES where TABLE_SCHEMA = ?; -- 例如 select table_schema,table_name,table_...
  • oracle数据库主键自动生成
  • 根据数据库的四大参数获取指定库中的所有表 //根据数据库的参数获取指定库中的所有表 public static List<Map<String, String>> getDbTables(String driver, String url, String user, String pwd) { ...
  • *使用场景:在做两表操作,做添加时有时会需要在另一张表中需要刚刚...注意:resultType是你主键id的类型, 我使用的是BigDecimal,改成自己的数据类型即可,BigDecimal适用于精确的,此处不是合用 &lt;select...
  • oracle创建主键语句

    千次阅读 2014-11-20 15:38:15
    alter table 表 add constraint 键名(MAILMESSAGE_pk) primary key 列(MASSID) enable validate;
  • 上例中就是通过 getUserId获取主键 user.getUserId() 2不支持主键自增的数据库(Oracle) 对于像Oracle这样的数据,没有提供主键自增的功能,而是使用序列的方式获取自增主键。可以使用标签来获取主键的值,这种...
  • 主键自增在插入数据的时候是很实用的,可以获取并操作返回的插入记录的ID,接下来介绍Oracle如何创建主键自增表,感兴趣的你可以了解下,就当是巩固知识,希望此文对你有所帮助
  • 添加用户、返回主键 --场景:在执行新增用户sql后,service层返回新增用户的主键值(与mybatis一起使用) insert into user(username, sex, birthday) values(#{username}, #{sex}, #{birthday}) 1. 数据库MySQL ...
  • 一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 ... 三、Oracle+Mybatis 中 插值并返回主键 SELECT 【序列名】.CURRVAL as id from DUAL insert into t_user (id,name) values (null,#{name,jdbcType=VARCHAR})
  • Oracle根据主键获取对应表,Oracle根据外键获取相关表 Oracle根据主键获取对应表 select * from user_constraints a, USER_CONS_COLUMNS b where a.CONSTRAINT_TYPE = 'P' and a. constraint_name = b.constraint...
  • Oracle的自增主键Oralce的自增主键创建1.使用序列实现主键自增2.通过序列+触发器实现自增序列Mybatis中插入数据,并获取自增主键值MysqlOracle Oralce的自增主键创建 oracle没有mysql那样可以有自增主键,需要自己...
  • Mybatis批量插入返回自增主键: 对于支持生成自增主键的数据库:useGenerateKeys和...1、Oracle数据库中创建自增序列 create sequence ARCHIVES_SEQ_ID start with 1 increment by 1 minvalue 1 nomaxva...
  • 转载:... 首先感谢上作者提供的解答, 今天用mybatis时需要获取insert后的主键,方法如下: public Integer genBizOrder(Map m); [html] view plain copy insert 
  • 注意:db2与oracle在这点是一样的可以先获取只再使用,而mysql不可以 db2:  select nextval for MY_SEQ from sysibm.sysdummy1   转载于:https://www.cnblogs.com/atwanli/articles/4863052.html
  • 数据库获取主键的SQL

    千次阅读 2015-08-06 19:26:46
    很多时候,要获得数据库的表的主键,但是一时间又想不起来用什么,今天就做个笔记,记录下: 1. 获得 MYSQL 中某个表的主键的SQL: SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_...
  • Oracle获取唯一主键

    2019-10-15 15:08:42
    select sys_guid(), SUBSTR(sys_guid(), 1, 32), RAWTOHEX(sys_guid()) from dual;
  • #Oracle解决ID自增问题 为每各一个自增的表创建序列和触发器 注意替换[]中的表名 #创建序列 create sequence [ROLE_INFO]_SEQ increment by 1 start with 1 nomaxvalue nocycle cache 20; #重置序列 ALTER SEQUENCE...
  • oracle创建表时主键自动增长方法 5 测试反复执行如下语句:insert into Test_Increase(Username) values('test')6 查看插入结果:userid username1 test2 test3 test4 test5 test6 test7 test8 test9 test
  • 查询某个表中的主键字段名 select col.column_name from user_constraints con, user_cons_columns col where con.constraint_name = col.constraint_name and con.constraint_type='P' and col.table_name ...
  • 这里写自定义目录标题问题解决方案拓展阅读1、MyBatis-Plus内置支持的数据库主键序列2、MyBatis-Plus主键策略3、mybatis-plus版本不同,oracle序列配置不同4、Orcale11 主键自增策略 重点看解决方案第三个即可 问题 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,412
精华内容 20,164
关键字:

oracle获取主键