最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

SQL自動增長列

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 08:10:41
文檔

SQL自動增長列

SQL自動增長列:在SQL SERVER2K有1個變量和2個函數(shù)可以得到: IDENT_CURRENT() 返回為任何會話和任何作用域中的特定表最后生成的標識值。 SELECT @@IDENTITY 返回為當前會話的所有作用域中的任何表最后生成的標識值。 SCOPE_IDENTITY() 返回為當前會話和當前
推薦度:
導讀SQL自動增長列:在SQL SERVER2K有1個變量和2個函數(shù)可以得到: IDENT_CURRENT() 返回為任何會話和任何作用域中的特定表最后生成的標識值。 SELECT @@IDENTITY 返回為當前會話的所有作用域中的任何表最后生成的標識值。 SCOPE_IDENTITY() 返回為當前會話和當前

在SQL SERVER2K有1個變量和2個函數(shù)可以得到: IDENT_CURRENT() 返回為任何會話和任何作用域中的特定表最后生成的標識值。 SELECT @@IDENTITY 返回為當前會話的所有作用域中的任何表最后生成的標識值。 SCOPE_IDENTITY() 返回為當前會話和當前作用域中的任何表

在SQL SERVER2K有1個變量和2個函數(shù)可以得到:
IDENT_CURRENT() 返回為任何會話和任何作用域中的特定表最后生成的標識值。
SELECT @@IDENTITY 返回為當前會話的所有作用域中的任何表最后生成的標識值。
SCOPE_IDENTITY() 返回為當前會話和當前作用域中的任何表最后生成的標識值。

========================================================================================

如何插入一條記錄獲取插入后的自動增長ID列的方法.

主要介紹了如何在設(shè)定了自動增長ID列后添加一條數(shù)據(jù)后獲取添加的自動增長的ID值方法.

這篇文章我寫了一個使用企業(yè)庫3.0的方法來獲取自動增長ID列的方法,代碼如下:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using Microsoft.Practices.EnterpriseLibrary.Data;

using System.Data.Common;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

Database db = DatabaseFactory.CreateDatabase("SQLConnectionString");

string strSql = @"INSERT INTO [BSA].[dbo].[BSA_MissionLog]

([a]

,[b])

VALUES

('1'

,'1'

)

select id = scope_identity()";//這里是最重要的一段話.

DbCommand dbcomm = db.GetSqlStringCommand(strSql);

DataSet ds = db.ExecuteDataSet(dbcomm);

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)

{

for (int j = 0; j < ds.Tables[0].Columns.Count; j++)

{

Response.Write("第"+i+"行"+j+"列:"+ds.Tables[0].Rows[i][j].ToString());

}

}

}

}

下面的代碼是使用ado.net 2.0的代碼:

SqlConnection con = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=table1;Persist Security Info=True;User ID=sa;Password=sa");

try

{

string strSql = @"INSERT INTO Log

([a]

,[b])

VALUES

('1'

,'1')

select id = scope_identity()";

con.Open();

SqlCommand com = new SqlCommand(strSql, con);

DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter(com);

da.Fill(ds);

con.Close();

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)

{

for (int j = 0; j < ds.Tables[0].Columns.Count; j++)

{

Response.Write("第" + i + "行" + j + "列:" + ds.Tables[0].Rows[i][j].ToString());

}

}

}

finally

{

con.Close();

}

微軟對這樣的方法解釋是:

此代碼告訴 SQL Server 不要返回查詢的行計數(shù),然后執(zhí)行 INSERT 語句,并返回剛剛為這個新行創(chuàng)建的 IDENTITY 值。da.Fill(ds)語句返回的記錄集有一行和一列,其中包含了這個新的 IDENTITY 值。如果沒有此語句,則會首先返回一個空的記錄集(因為 INSERT 語句不返回任何數(shù)據(jù)),然后會返回第二個記錄集,第二個記錄集中包含 IDENTITY 值。這可能有些令人困惑,尤其是因為您從來就沒有希望過 INSERT 會返回記錄集。之所以會發(fā)生此情況,是因為 SQL Server 看到了這個行計數(shù)(即一行受到影響)并將其解釋為表示一個記錄集。因此,真正的數(shù)據(jù)被推回到了第二個記錄集。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

SQL自動增長列

SQL自動增長列:在SQL SERVER2K有1個變量和2個函數(shù)可以得到: IDENT_CURRENT() 返回為任何會話和任何作用域中的特定表最后生成的標識值。 SELECT @@IDENTITY 返回為當前會話的所有作用域中的任何表最后生成的標識值。 SCOPE_IDENTITY() 返回為當前會話和當前
推薦度:
標簽: 自動 2 sql
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top