chiname

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  13 随笔 :: 1357 文章 :: 899 评论 :: 107万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

table 结构 id 主键int型 标记增量 1  name pwd 两个字段char型

也就是说注册名字然后返回刚才注册的ID就像QQ注册一样

以前不知道解决方法用 SELECT MAX(id)来查询,

但这有个问题,访问量大点的话就不一定返回注册的ID,违背一致性

现找了很多微软文档

原来是有现成SQL语句,发出来共勉之

INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name)  SELECT @@IDENTITY AS Id

AS后名字是任取的IDENTITY是主键的意思,所以一定要有主键才可返回

不难理解,就是要用主键来确保插入数据的惟一性

上面SQL使用方法和普通SELECT一样

这个给个C# ASP.net例子

sqlCommand1.CommandText = "INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name)  SELECT @@IDENTITY AS Id";

sqlCommand1.Connection 
= sqlConnection1;

sqlCommand1.Parameters.Add(
new System.Data.SqlClient.SqlParameter("@pwd", System.Data.SqlDbType.NVarChar, 20"pwd"));

sqlCommand1.Parameters.Add(
new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.NVarChar, 50"name"));

sqlCommand1.Parameters[
"@name"].Value=name.Text;

sqlCommand1.Parameters[
"@pwd"].Value=pwd.Text;

sqlConnection1.Open();

System.Data.SqlClient.SqlDataReader R
=sqlCommand1.ExecuteReader();

if(R.Read())Response.Write("<script language=javascript>window.alert('注册成功,请记住你的ID:"+R.GetValue(0).ToString()+"');window.close();</script>");

sqlConnection1.Close();
posted on 2005-03-08 09:58 天才.NET 阅读(75) 评论(6)  编辑 收藏

FeedBack:
# re: [原创]SQL INSERT INTO语句如何返回刚插入的行?
2005-03-08 10:01 | 红叶枫
SELECT * FROM TABLE WHERE ID=@IDENTITY
RETURN @@ROWCOUNT

--OVER!
  
# re: [原创]SQL INSERT INTO语句如何返回刚插入的行?
2005-03-08 10:08 |
请问这样的话IDENTITY ROWCOUNT
如何得到

INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name) SELECT * FROM TABLE WHERE ID=@IDENTITY
RETURN @@ROWCOUNT


是这样写的吗?

  
# re: [原创]SQL INSERT INTO语句如何返回刚插入的行?
2005-03-08 16:47 | Michael.zh
Declare @NewID int
Declare @RowCount int

select @NewID = @@Identity, @RowCount = @@Rowcount

获取刚才插入的记录,先写Insert语句,然后再Select
SELECT * FROM TABLE WHERE ID=@@IDENTITY

  
# re: [原创]SQL INSERT INTO语句如何返回刚插入的行?
2005-03-08 17:15 |
也算是一种不错的解决方法,但还是不具有原子性

如果再刚才插入的记录后


然后再Select前有用户也执行插入操作是否会出现问题

  
# re: [原创]SQL INSERT INTO语句如何返回刚插入的行?
2005-03-08 17:25 | 右岸
这个语句和使用存储过程返回id值的原理应该是一样的
  
# re: [原创]SQL INSERT INTO语句如何返回刚插入的行?
2005-03-08 17:34 |
INSERT INTO userinfo (pwd, name) VALUES (@pwd, @name) SELECT @@IDENTITY AS Id

这是完美的解决方法,高效性 和原子性

插入查询一起完成
posted on   把我的欢乐带给你  阅读(22033)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示