zoukankan      html  css  js  c++  java
  • 插入记录后,获取记录的ID

    基本知识

    1. IDENTITY 列不能由用户直接更新,它是由系统自动维护的。

    2.该列数据类型必须为数值型:int, smallint, tinyint, decimal or numeric with scale 0。

    3.该列不能为 null。

    4.不能在该列上设置缺省值。

    5.递增量只能为整形(比如:1,2,-3)。不能为小数,也不能为0。

    6.基值(种子值 seed)可以由用户设置,缺省值为1。

    理解 @@IDENTITY

    @@IDENTITY 返回最后一个插入 IDENTITY 的值,这些操作包括:INSERT, SELECT INTO,或者 bulk copy。如果在给没有 IDENTITY 列的其他表插入记录,系统将其置为 null。如果有多行记录插入到 IDENTITY 表中,@@IDENTITY 表示最后一个产生的值。如果触发了某个触发器,并且这个触发器执行向另一个带有 IDENTITY 列的表的插入操作,@@IDENTITY 将返回这个由触发器产生的值。如果这个触发器插入的表中不包含 IDENTITY 列,那么 @@IDENTITY 将为 null。如果插入操作失败,@@IDENTITY 值依然会增加,所以 IDENTITY 不保证数据的连续性。

    @@IDENTITY 是当前连接的全局变量,只对当前连接有效。也就是说,如果断开连接再重新连接后,@@IDENTITY 为 null。以 ADO 来说,@@IDENTITY 在 Connection 对象打开和关闭期间是有意义的,即在 Connection 对象的存在范围内有效。在 MTS 组件中,从打开连接到显式的关闭连接(Connection.Close)或者到调用了 SetAbort,SetComplete之前,在这期间,@@IDENTITY 有意义。

    使用 Truncate table 语句会使 IDENTITY 列重新开始计算。

    得到 @@IDENTITY 的值

    有三种方法(以下代码均使用 VBScript)

    方法一:

    Dim Conn, strSQL, Rs
    Set Conn = CreateObject("ADODB.Connection")
    ’ Open a connection to the database
    Conn.Open("DSN=myDSN;;UID=myUID;;PWD=myPWD;;")

    ’ Insert a new record into the table
    strSQL = "INSERT INTO mtTable (columnName) valueS (’something’)"

    ’ Execute the SQL statement
    Conn.Execute(strSQL)

    ’ Get the @@IDENTITY.
    strSQL = "SELECT @@IDENTITY AS NewID"
    Set Rs = Conn.Execute(lsSQL)
    NewID = Rs.Fields("NewID").value

    ’ Close the connection
    Conn.Close()
    Set Conn = Nothing

    方法二(仅限于 ADO 2.0 以上):

    Dim Conn, strSQL, Rs
    Set Conn = CreateObject("ADODB.Connection")
    ’ Open a connection to the database
    Conn.Open("DSN=myDSN;;UID=myUID;;PWD=myPWD;;")

    ’ Insert a new record into the table
    lsSQL = "INSERT INTO myTable (columnName) valueS (’something’);;" &_

       "SELECT @@IDENTITY AS NewID;;"

    ’ Execute the SQL statement
    Set Rs = Conn.Execute(lsSQL)

    ’ Get the second resultset into a RecordSet object
    Set Rs = Rs.NextRecordSet()

    ’ Get the inserted ID
    NewID = Rs.Fields("NewID").value

    ’ Close the connection
    Conn.Close()
    Set Conn = Nothing

    方法三:

    Dim Conn, strSQL, Rs
    Set Conn = CreateObject("ADODB.Connection")
    ’ Open a connection to the database
    Conn.Open("DSN=myDSN;;UID=myUID;;PWD=myPWD;;")

    ’ Insert a new record into the table
    strSQL = "SET NOCOUNT ON;;" &_

       "INSERT INTO myTable (columnName) valueS (’something’);;" &_

       "SELECT @@IDENTITY AS NewID;;"

    ’ Execute the SQL statement
    Set Rs = Conn.Execute(lsSQL)

    ’ Get the inserted ID
    NewID = Rs.Fields("NewID").value

    ’ Close the connection
    Conn.Close()
    Set Conn = Nothing
  • 相关阅读:
    css3:让IE兼容background-size的方法
    判断浏览器版本是否是ie9以下浏览器,提示升级
    正则表达式
    H5页面内容较少时如何让页面全屏在手机显示呢
    页面滚动指定高度时添加样式或动画
    使用js实现导航切换效果变化(收集案例)
    单行文字定时滚动(收集案例)
    使用zepto.js完成的手机相册
    Repaint 、Reflow 的基本认识和优化
    Web-[强网杯 2019]随便注
  • 原文地址:https://www.cnblogs.com/MaxIE/p/350224.html
Copyright © 2011-2022 走看看