`
jessen163
  • 浏览: 465697 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

新增/修改时,唯一性字段检查

    博客分类:
  • Util
 
阅读更多
一个对象,比如订单Order
有一个无意义的orderId作为唯一标识属性,还有一个有意义的订单号orderNo
orderNo也必须是唯一的,在添加修改数据的时候,就存在校验唯一性的问题

先假设有表order,保含2个字段,orderid,orderNo

1.新增
  我们写一个通用的校验类,有一个check方法,参数为表名,校验的列名,列的值


  CheckUnique.java

  public class CheckUnique {
 public static boolean check(
  String tablemame,
  String coluname,
  String coluvalue)
  throws BaseException {

  boolean isExist = false;

  Connection con = null;
  Statement pstmt = null;
  ResultSet rs = null;

  try {
   con = BaseDAO.getConnection();
   String strSql = "";
   strSql =
    "select count(1) as count  from "
     + tablemame
     + " where "
     + coluname
     + "="
     + coluvalue;
     
   Debug.printErr(strSql);  

   pstmt = con.createStatement();
   rs = pstmt.executeQuery(strSql);
   int totalNum = 0;
   if (rs.next()) {
    totalNum = rs.getInt("count");

    if (totalNum != 0)
     isExist = true;
   }

  } catch (SQLException sql) {
   try {
    if (con != null)
     con.rollback();
   } catch (Exception e) {
   }
   throw new BaseException(sql.getMessage());
  } finally {
   try {
    rs.close();
   } catch (SQLException e) {
   }
   try {
    pstmt.close();
   } catch (SQLException e) {
   }
  }
  return isExist;
 }
}

  现在我们就可以通过CheckUnique.check("order","orderNo","20050501111")来校验orderNo

2.修改
修改的校验要比新增麻烦,因为修改的时候,检测orderNo当然是存在了。
在CheckUnique类添加新方法checkUpdate(String tableName,   //表名
                                                                    String idColName,  //主键列名
                                                                    String idColValue, //主键列值
                                                                    String uniColName, //校验列名
                                                                    String uniColVaue) //校验列值
方法内容基本和check()方法一样,只是sql语句strSql不同,strSql如下
 select count(1) as count  from tableName t1
 where t1.uniColName=uniColVaue
 and t1.idColName not in
 (
   select t2.idColName from tableName t2
   where t2.idColName=idColValue and t2.uniColName=uniColVaue
 )
 
 order的例子
  select count(1) as count  from order t1
 where t1.orderNo='200505001111'
 and t1.orderId not in
 (
   select t2.orderId from order t2
   where t2.orderId=9527 and t2.orderNo='200505001111'
 )
分享到:
评论

相关推荐

    Oracle 增加修改删除字段

    Oracle支持多种类型的约束,如主键(PRIMARY KEY)、外键(FOREIGN KEY)、唯一性(UNIQUE)、非空(NOT NULL)和检查(CHECK)等。 **添加约束**: ```sql ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 ...

    Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)

    本文将深入探讨如何在 Mybatis Plus 中自定义批量插入和批量更新,并根据唯一索引来确保数据的唯一性。 首先,了解 Mybatis Plus 的批量操作基础。Mybatis Plus 提供了 `batchInsert()` 和 `batchUpdate()` 方法来...

    .net实现新增数据时编号自动加一

    在.NET开发环境中,我们经常需要处理数据库中的序列号或者编号,使其在新增数据时自动加一,以确保每个记录的唯一性。这个过程通常涉及到数据库设计、编程逻辑以及可能的性能优化。以下是对".NET实现新增数据时编号...

    K/3BOS12.1手册

    6.3.42 单据录入时检查单据体字段唯一性 139 .3.43 批号F7取数 140 6.3.44 设置当前字段更新Web页签的url 140 6.3.45 设置字段可触发Web页面上值改变事件 141 6.3.46 根据物料设置数量单价精度根据币别设置金额精度 ...

    数据库的新增,删除,查找,修改;.pdf

    对于具有唯一性的数据,需要检查修改后的数据是否冲突。修改操作通过更新实体并调用`Entry()`方法,然后用`SaveChanges()`保存更改。 常用的方法和属性: - `Equals()`: 比较两个值是否相等,可选参数用于忽略大小...

    eas供应链dep案例集

    新增及调整字段 EASSCMA1P0009 付款单单头增加“国家”字段 客户为餐饮企业,每日进行采购,且采购物品85%左右相同,做采购申请单时,往往是复制上日的采购申请单,然后再进行修改,其中很大程度上只是修改日期...

    比较全面的测试方法总结

    12. **字段唯一性测试**:根据实际情况测试名称字段是否具有唯一性。 13. **字段名称一致性**:确认各字段名称书写是否正确,要求编辑界面、信息列表中、错误提示信息、查询条件中的字段名称完全相同。 14. **特殊...

    测试方法总结word

    名称字段的唯一性也是需要验证的,而字段名称在不同界面的一致性是用户友好性的体现。特殊格式的字段,如电子邮件和邮编,需符合标准格式。上级信息字段应能自动填充,联动字段信息要同步更新,且只读字段如创建人、...

    无侵入修改列表方案1

    开发者需要新增一个接口,这个接口的URL是需要被代理的目标,同时接口中包含字段名,这些字段对应着需要扩展的数据库字段。配置中还需要设置一个判断字段,如“是否启用”,当启用时,才会将新的列添加到列表中。 ...

    技术文件更改登记表.doc

    6. **更改标记**:此字段用于简短描述更改的性质,例如“新增”、“删除”、“修订”等,快速识别更改类型。 7. **更改人**:记录做出更改的人员,以便在出现问题时找到责任人,同时也是对工作成果的记录。 8. **...

    船舶舾装件代码编制方法总则.pdf

    - 完成编码后,通过计算机软件检查规范性和唯一性,并进行验收,存入代码数据库。 - 代码修改需按程序进行,且修改后的代码同样需要检查和验收。 - 新增代码需检查是否与现有代码重复,并定期维护数据库。 6. **...

    数据库树形数据处理方案.pdf

    本文档提供了一种处理树形数据的方案,主要涉及排序、新增、修改、复制、删除以及数据完整性的检查和汇总统计。 首先,树形数据的存储通常采用自关联的方式,即每个记录都有一个标识其上级记录的字段。在这个例子中...

    数据库建表操作SQL语句大全

    向表中添加数据完整性约束,如唯一性、非空等。 **语法示例**: ```sql ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] ); ``` **解释**: - **表名**:要添加约束的表的名称。 - **约束名**:...

    文章管理系统

    1.[新增]前台会员投稿和后台文章编辑 新增重复性标题检查按钮和本地获取关键词 2.[新增]新增本地关键词库(位置:inc/keyWord.txt),可以根据自己需求往里面编辑需要的关键词 3.[新增]前台 文章管理 新增查询栏 4....

    应用配置功能测试报告1

    为了实现这一功能,通常会在数据库设计时设立唯一约束或者通过编程逻辑进行检查,确保每次新增或修改项目编码时,系统都会检查其是否已存在于数据库中。 2. **数据操作的自动化**:测试报告显示,点击“修改”按钮...

    工作交接内容

    - **唯一性检查**:某些字段需要进行唯一性检查。 - **附件上传**:上传多个附件时需注意其对应关系。 #### 4. Packing作业 - **第一步**:根据指定条件获取待打包的出货单列表。 以上是对工作交接内容的详细总结...

    kettle两表完全同步.docx

    - **标志字段**是一种特殊字段,用于记录数据的状态,如新增(new)、修改(changed)和删除(deleted)。在比较新旧数据时,根据标志字段的值来确定每个记录的操作。 - **标志字段的设定规则**: - 如果新旧...

Global site tag (gtag.js) - Google Analytics