惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - 天使爱比目鱼

微软日期格式的改变造成程序崩溃 .NET 中DataGridViewComboBoxCell控件得Bug VB.NET在基类中定义共享事件(类似于C#中的静态事件) 也谈解决Combobox绑定数据后取值出现System.Data.DataRowView的问题 在SQL Server 2014下面使用的SQL2000的Northwind和Pubs示例数据库 去除Linq to Sql 查询结果中的空格 VS2015中DataGridView的DataGridViewComBoboxCell列值无效及数据绑定错误的解决方法 DevExpress学习笔记1-ProductsDemo.Win 在VB中使用Linq To SQLite注意事项 在VB中利用Nuget包使用SQLite数据库和Linq to SQLite 在C#中利用Nuget包使用SQLite数据库和Linq to SQLite VB.NET中使用Linq TO SQL添加数据后获得自增长列ID [转载代码]VB.NET 中查询 Linq to SQL 执行时的SQL语句 Linq to SQL 绑定 ComboBox 在VS.NET中根据条件设置不同的MainForm 在T-SQL中使用参数将XML数据添加到SQL数据库的XML列 测试Windows Live Writer 4步搞定:系统必备的安装位置未设置为组件供应商的网站,无法在磁盘上找到 dotNetFx40LP_Client_x86_x64cs.exe 问题的解决方案 VS2010 SP1 简体中文测试通过,繁体未测试 控件命名规范(转自CSDN)
[转载自键舞者]SELECT IDENT_CURRENT(tableName)获得自增长列ID的实现
天使爱比目鱼 · 2011-10-03 · via 博客园 - 天使爱比目鱼

项目中要用到一个功 能:主表主键为自增长,要求在插入主表数据前先获得主表要插入数据的主键ID值,用在插入子表时获取主键ID。在网上搜了一下,发现SELECT IDENT_CURRENT(TableName)这个语句可以实现。可是后来发现这个语句存在一个致命问题。

问题如下:(表中数据都 为空)

(情况一)

当新建表数据为空时, IDENT_CURRENT(TableName)返回值为1.这时主表数据插入成功后,主表自增长列会自动赋值 1

(情况二)

当新增一条数据并删除后, IDENT_CURRENT(TableName)返回值还是1,可是现在主表 插入成功后,主表自增长列会自动赋值2,而插入子表的主表ID还是1,这样就会导致主表和子表的关联字段不一致。

在网上找了几个解决方案:

1. DBCC CHECKIDENT (tableName, RESEED, 1)

重 置表的标示种子为1,可是在‘情况二’下,数据库还是会以 2 赋给主表ID字段,而不是1

2. DBCC CHECKIDENT (tableName)

在”情况一”下输出为:

检 查标识信息: 当前标识值'null',当前列值'null'。

在”情况二”下输出为:

检 查标识信息: 当前标识值'1',当前列值'1'。

虽 然根据输出信息不同,当数据表空时可以判断是‘情况一’还是‘情况二’,可是在C#中无论用ExecuteNonQuery, ExecuteScalar还是datatable返回的都是空数据

郁闷了一个下午始终没有找到答案,最后发现用下面的方法可以实现在子表中插入主表最新记录的ID值。 直接将“CONVERT(INT,IDENT_CURRENT('TableName'))”作为主键ID的值添加到子表sql语句即可

如INSERT INTO PayInfo(SID) VALUES(CONVERT(INT,IDENT_CURRENT('TableName')))