zoukankan      html  css  js  c++  java
  • 如何取得SQL中自增伴位的下一个值

    一般來說, 俱有 identity 屬性欄位的 table 的目前值可以很容易地利用 max 函數來取得. 不過, 也很有可能 max 該筆資料已被刪除了, 所以利用 max 查找出來的結果不正確.

    但又若是要找出下一個 identity 的值呢? 就一定得知道漸增量 (increment) 為何了, 否則是沒有辦法計算出來的.

    請先參考這篇文章: SQL Server的Identity欄位使用/複製/重設 http://diary.tw/tim/65 , 這篇文章中也有提到有關取得目前的 identity 值的方式, 是利用 dbcc checkident('table_name', NORESEED) 來取回, 不過取回來的是文字訊息 (text message), 而不是很方便程式化, 若要滿足前面的需求, 包含取回 identity 目前值及下一個, 則有現成的函數可用:

    1. IDENT_CURRENT: 取出 identity 欄位的目前值
    2. IDENT_INCR: 取出 identity 欄位的漸增值
    3. IDENT_SEED: 取出 identity 欄位的起始種子

    使用方式如下:

    select IDENT_CURRENT('table_name')

    這樣可以取出該 table_name table 中的 identity 欄位的目前值, 而下一個呢? 可以利用:

    select IDENT_CURRENT('table_name') + IDENT_INCR('table_name')

    這樣就可以順利取出來, 也就是拿目前值加上漸增值. 而且回傳的結果是一個 resultset 的方式將值傳回, 很方便應用於程式化的需求.

    不過無論如何, 也請特別注意, 這種應用需求, 並非是要 developer 將值取出後再塞回去的, 因為 identity 欄位是由系統維護的, 而不是 developer (或說程式) 維護的, 所以這樣取出是可以拿來觀察, 而不是要塞回去用的, 請特別注意一下.

    具体实例如下:

    select Case when (Select Count(*) from 表名)=0 then IDENT_CURRENT('表名') else IDENT_CURRENT('表名')+IDENT_INCR('表名') end

  • 相关阅读:
    echarts
    联合省选2021游记
    高维 FWT 学习笔记
    Unicode简介
    mac安装brew
    原生JS实现分页跳转
    Kubernetes Pod Probes 探针解析
    Kubernetes Secrets
    Kubernetes Container lifecycle hooks
    个人作业1——四则运算题目生成程序(基于java)
  • 原文地址:https://www.cnblogs.com/jacker1979/p/1820378.html
Copyright © 2011-2022 走看看