代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题

简介:

namespace Entity 
{ 
    /// <summary> 
    /// 自定义主键编码 
    /// </summary> 
    public enum PkIdRecordCode 
    { 
        /// <summary> 
        /// OrderID 
        /// </summary> 
        OR = 10, 
        /// <summary> 
        /// ProductID 
        /// </summary> 
        PR = 30, 
        /// <summary> 
        /// StoreID 
        /// </summary> 
        ST = 40, 
        /// <summary> 
        /// UserID 
        /// </summary> 
        US = 20, 
    } 
    /// <summary> 
    /// 含有自增主键性质的表枚举 
    /// </summary> 
    public enum PKIDTable 
    { 
        /// <summary> 
        ///     地区信息 
        /// </summary> 
        Areas = 1, 
        /// <summary> 
        ///   银行信息 
        /// </summary> 
        BankInfos = 2, 
        /// <summary> 
        /// 商品虚拟分类属性 
        /// </summary> 
        CategoryPropertys = 3,

    }

}

        /// <summary> 
        /// 代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题 
        /// </summary> 
        /// <param name="code"></param> 
        /// <returns></returns> 
        public int GetNewPKID(Entity.PKIDTable code) //由后后台也要建立用户,所以把它改为public -zhangzhanling 
        { 
            string _code = null;

            int idNum = 0; 
            using (TransactionScope transactionScope = new TransactionScope()) 
            { 
                try 
                { 
                    _code = Enum.GetName(typeof(Entity.PKIDTable), code); 
                    idNum = base._db.ExecuteQuery<int>("UPDATE PkIdTable SET IDNum= IDNum+1 WHERE Code={0};select IDNum from PkIdTable WHERE Code = {0}", _code).Single(); 
                    transactionScope.Complete(); 
                    transactionScope.Dispose(); 
                    return idNum; 
                } 
                catch (Exception ex) 
                { 
                    throw ex; 
                } 
                finally 
                { 
                    transactionScope.Dispose(); 
                } 
            } 
        } 
       
  /// <summary> 
        /// 一些特殊的主键,需要有固定的位数,当位数的数字不够时,在前面补0 
        /// </summary> 
        /// <param name="code"></param> 
        /// <returns></returns> 
        public string GetNewID(Entity.PkIdRecordCode code) //由后后台也要建立用户,所以把它改为public -zhangzhanling 
        { 
            string _code = null;

            int idNum = 0; 
            using (TransactionScope transactionScope = new TransactionScope()) 
            { 
                try 
                { 
                    _code = Enum.GetName(typeof(Entity.PkIdRecordCode), code); 
                    idNum = base._db.ExecuteQuery<int>("UPDATE PkIdRecords SET IDNum= IDNum+1 WHERE Code={0};select IDNum from PkIdRecords WHERE Code = {0}", _code).Single(); 
                    transactionScope.Complete(); 
                    transactionScope.Dispose(); 
                    return string.Format("{0}{1}", (int)code, idNum.ToString().PadLeft(6, '0')); 
                } 
                catch (Exception ex) 
                { 
                    throw ex; 
                } 
                finally 
                { 
                    transactionScope.Dispose(); 
                } 
            } 
        }

数据库结构

本文转自博客园张占岭(仓储大叔)的博客,原文链接:代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题,如需转载请自行联系原博主。

目录
相关文章
|
30天前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
1月前
|
存储 SQL 关系型数据库
TiDB的优势:为何选择TiDB作为您的数据库解决方案
【2月更文挑战第25天】随着数据规模的不断增长和业务需求的日益复杂化,现代企业对数据库系统的扩展性、高可用以及分布式处理能力提出了更高的要求。TiDB作为一个新型的开源分布式数据库,以其独特的设计理念与卓越的技术特性,在众多数据库解决方案中脱颖而出。本文将深入剖析TiDB的核心优势,探讨其如何帮助企业从容应对海量数据挑战、实现无缝水平扩展、保障服务高可用性,并提供灵活一致的事务支持。
|
1月前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
17 0
|
6天前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
处理爬取的数据,可存储为txt、csv(适合表格数据)或json(适合结构化数据)文件。若需存储大量数据并执行复杂查询,可选择关系型(如MySQL)或非关系型(如MongoDB)数据库。以MySQL为例,需安装数据库和Python的pymysql库,创建数据库和表,然后编写Python代码进行数据操作。选择存储方式应考虑数据类型、数量及后续处理需求。
14 1
|
7天前
|
SQL 关系型数据库 MySQL
关系型数据库插入数据的语句
使用SQL的`INSERT INTO`语句向关系型数据库的`students`表插入数据。例如,插入一个`id`为1,`name`为&#39;张三&#39;,`age`为20的记录:`INSERT INTO students (id, name, age) VALUES (1, &#39;张三&#39;, 20)。如果`id`自增,则可简化为`INSERT INTO students (name, age) VALUES (&#39;张三&#39;, 20)`。
7 2
|
7天前
|
SQL 存储 Oracle
关系型数据库查询数据的语句
本文介绍了关系型数据库中的基本SQL查询语句,包括选择所有或特定列、带条件查询、排序、分组、过滤分组、表连接、限制记录数及子查询。SQL还支持窗口函数、存储过程等高级功能,是高效管理数据库的关键。建议深入学习SQL及相应数据库系统文档。
9 2
|
14天前
|
人工智能 Cloud Native 算法
数据之势丨AI时代,云原生数据库的最新发展趋势与进展
AI与云数据库的深度结合是数据库发展的必然趋势,基于AI能力的加持,云数据库未来可以实现更快速的查询和决策,帮助企业更好地利用海量数据进行业务创新和决策优化。
数据之势丨AI时代,云原生数据库的最新发展趋势与进展
|
1月前
|
安全 Java 数据库连接
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
154 0
|
1月前
|
缓存 监控 安全
宝塔数据库崩溃解决方案详解
宝塔数据库崩溃解决方案详解
|
1月前
|
存储 关系型数据库 MySQL
Python导入Excel数据到MySQL数据库
Python导入Excel数据到MySQL数据库
92 0

热门文章

最新文章