我们在开发的时候经常会听到这样的建议:1. 设计数据库表的时候,要为每个表设置一个主键:2. 主键最好是跟业务无关的: 3. 最好是自增的: 于是,很多新入行的程序猿们把这些前辈们的教条拿来就用,每个表的开头都会有个ID字段,并且在自增那里再打上个"勾勾".OK,万事大吉,开始Coding.这个习惯有不少人甚至是保持了好多年,却从来没思考过对与不对,更不说为什么了.今天,我们来一起简单地分析一下原因,希望起到抛砖引玉的作用,引起大家进一步深入研究的兴趣. 主键主要作用:数据完整性:让相…
查询表信息(表名/表描述): SELECT table_name name,TABLE_COMMENT value FROM INFORMATION_SCHEMA.TABLES WHERE table_type='base table' and table_schema = '数据库名' order by table_name asc 查询列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述): 方式一: SHOW FULL COLUMNS FRO…
查询表信息(表名/表描述) Value ) AS value FROM sysobjects a Where a.xtype = 'U' AND a.name <> 'sysdiagrams' AND a.name <> 'dtproperties' ORDER BY a.name asc 查询列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述) ) ) THEN NULL ELSE COLUMNPROPERTY(a.id,a.na…
查询表信息(表名/表描述) Select table_Name As Name,Comments As Value From User_Tab_Comments Where table_Type='TABLE' Order By table_Name Asc 查询列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述) select a.COLUMN_ID As Colorder,a.COLUMN_NAME As ColumnName,a.DATA_…
查询表信息(表名/表描述) select a.relname as name , b.description as value from pg_class a ) b on a.oid = b.objoid where a.relname in (select tablename from pg_tables where schemaname = 'public') order by a.relname asc 查询列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增…
mysql自增列导致主键重复问题分析...  原文:http://www.cnblogs.com/cchust/p/3914935.html 前几天开发童鞋反馈一个利用load data infile命令导入数据主键冲突的问题,分析后确定这个问题可能是mysql的一个bug,这里提出来给大家分享下.以免以后有童鞋遇到类似问题百思不得其解,难以入眠,哈哈.废话少说,进入正题. 拿到问题后,首先查看现场,发现问题表的中记录的最大值比自增列的值要大,那么很明显,当有记录进行插入时,自增列产生的值就有可…
前几天开发童鞋反馈一个利用load data infile命令导入数据主键冲突的问题,分析后确定这个问题可能是mysql的一个bug,这里提出来给大家分享下.以免以后有童鞋遇到类似问题百思不得其解,难以入眠,哈哈.废话少说,进入正题. 拿到问题后,首先查看现场,发现问题表的中记录的最大值比自增列的值要大,那么很明显,当有记录进行插入时,自增列产生的值就有可能与已有的记录主键冲突,导致出错.首先想办法解决问题,通过人工调大自增列的值,保证大于表内已有的主键即可,调整后,导数据正常.问题是解决了,接…
场景:插入数据的时候,获取不到非自增的主键.原因:对象中没有主键的值,插入后主键才有值. 解决方案:使用 @SelectKey @SelectKey中: statement是要运行的SQL语句,即查询最新一行数据的主键 keyProperty表示查询结果赋值给哪个属性,即主键 resultType 表示返回的id的Java类型,即String before表示查询语句statement运行的时机,即插入数据后查询…
网上搜了好多文章照着弄都返回不了主键给map, 实践证明要在传入的map参数里写回插入的主键,要这样写 <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="col.id">  // keyProperty要指定为map参数的  名称.写回的键名  才行            SELECT SEQ_LOG.nextval AS id FROM DUA…
首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法): public class Around {     private String xccd;  //对应主键     private String xcnm;     private String stcd;     private String sttp;     private BigDecimal lnth;     private String lead;     private String mans; …