zoukankan      html  css  js  c++  java
  • 取得SQLServer自增列(IDENTITY)的id值 (转)

    方案一   sqlserver返回插入的自增id

    语法:

    insert into tablename (字段1,字段1) output inserted.id values ('hhh','123');

    inserted.id的id是你表的id,执行此语句就可以返回自增的id

    例子:

    insert into applyinfo (a_hospital,a_barcode) output inserted.a_id values ('1','2');

     

    方案二  取得SQLServer自增列(IDENTITY)的id值

    SQLServer支持自增列作为主键,自增列为数据库开发带来很多便利,但同时也带来一些麻烦

    1、如何在插入数据记录后获得自增列主键值

    通过SQLServer帮助可以知道使用select scope_identity()是获得刚刚插入的自增列值的最好方法,但select scope_identity()必须在一个scope中才能获得,因此jdbc开发中你不可能在第二条SQL语句中获得自增列值,即使在同一个statement中;唯一的方法就是在插入数据的同时获得自增列值,这给数据库开发过程带来不便:

    String sql = "insert into table(a,b) values('a','b') select scope_identity()";

    statement.execute(sql);

    statement.getMoreResults();

    ResultSet rs = statement.getResultSet();

    rs.next();

    int no = rs.getInt(1);

    2 、如何在不希望插入数据的时候获得下一个自增列值

    在有些情况下,需要获得下一个自增列值,但又不希望插入记录到数据库,而且获得的自增列值,在后续操作中不会被数据库在作为主键产生;

    面对这中状况几乎唯一的办法就是,在一个事务,产生一条任意的合法的数据插入数据库,然后获得自增列值,再删除该记录;这也给开发过程带来不少的麻烦,因为要插入的数据必须符合数据库约束,必须满足业务逻辑,这对数据库SQL语句自动生成和执行带来额外的挑战

    C#中取自增字段的方法是: int id = Convert.ToInt32(cmd.ExecuteScalar());

  • 相关阅读:
    Leetcode OJ: Rotate List
    Leetcode OJ: Reverse Words in a String
    Effective C++读书笔记
    word改变下划线与文字的距离
    sql 取出表中不重复的值
    Iso文件用utrliso怎么安装
    Spring注入aspectJ切面
    Spring中利用java注解声明切面
    Spring面向切面编程
    spring中部分异常
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/13728508.html
Copyright © 2011-2022 走看看