1。selece Max(ID) .......... 得到最大的ID
可以用游标来防止出错
2 sqlserver 2000提供了两个全新的函数(IDENT_CURRENT,SCOPE_IDENTITY
),并且改进了@@IDENTITY的不足.当你插入新记录后,可以调用函数:
PRINT IDENT_CURRENT('table') '这将获得新的IDENTITY值,不管数据库中是不是有记
录添加(这就避免了@@IDENTITY的连接限制)
或者:PRINT SCOPE_IDENTITY() '这将获得在当前存储过程,触发器等其他程序创建的
最新记录的IDENTITY值.
而全局变量@@IDENTITY有一个问题,当对一张表执行insert时,如果该表有触发器程序
在执行插入操作,然后,接着在另一张表中插入记录,这样返回@@IDENTITY值就是第二
张表的IDENTITY值。
如果你用的不是SQL Server 2000,你最好一个简单的存储过程来解决这个问题。
CREATE PROCEDURE myProc
@param1 INT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO someTable
(
intField
)
VALUES
(
@param1
)
SET NOCOUNT OFF
SELECT NEWID = @@IDENTITY
END
try:
string sql = "insert into table1 (column1,column2) values ('abc',123);select @@identity as 'id'";
sqlCommand oCmd=new SqlCommand(sql,oConn);
int i = Convert.ToInt32(oCmd.ExecuteScalar());