执行SELECT SCOPE_IDENTITY()后,我得到一个空值。请注意,在我编写代码时,它就像一个魅力。代码是经典的ASP。
我使用的查询是:
INSERT INTO EID_Mandates([Uidx],[NatNr],[FirstName],[LastName],[ValidFrom],[ValidUntil],[Active])
VALUES(24387,'1234567','Paul','Tergeist','09/11/2015','09/11/2018',1);
SELECT SCOPE_IDENTITY() As MYID
执行时,Insert是正常的,但没有返回值(rs.fields.Count = 0)
Id位于id_mandate字段(自动增量)。
我很困惑!
编辑:11月10日 - 10:56 am。
好的,在接受了CPMunich的解决方案后,我继续寻找问题的原因,因为编程并不神奇。使用逻辑代码时,您会期望逻辑结果。
我发现的更令人沮丧。
1)插入代码在我测试时工作,这是肯定的,不,我没有改变它。
2)我做了一些测试,即使用一个简单的脚本来检查Scope_Identity()是否仍在工作......是的。
3)然后,我稍微修改了我之前的代码,以通过一个返回的测试函数(并显示ID)。不,没有,只有1个字段,不包含任何内容(NULL)。在那个函数中,我添加了代码来打开另一个连接(我用来打开主连接的代码)。 Dang,它有效!
4)我记录了两种情况下产生的SQL。除了日期时间和ID,完全相同。
所以在这一点上,我知道我的连接有点破坏,但不知道为什么?
最后我必须补充一点,整个服务器在一个月之前以腐烂的MS更新(KB2992611)的形式出现了一个大问题,这使得整个事情变得非常缓慢(这个错误影响了IIS通过LSASS连接到MSSQL服务器的方式。简而言之,对于每个查询,服务器的速度要慢10倍。
没问题,我目前正在将所有工作转移到另一个。
结论:遗憾的是,不确定。如果我做新的发现,我会告诉你们。
谢谢你们的帮助,以及StackOverflow在那里!
备注:毕竟,当你想到它时,PHP也很“古老”,不是吗? :)
答案 0 :(得分:0)
确保
如果您有该表的设置插入触发器,请使用SCOPE_IDENTITY
答案 1 :(得分:0)
也许这是你的选择:
INSERT INTO EID_Mandates([Uidx],[NatNr],[FirstName],[LastName],[ValidFrom],[ValidUntil],[Active])
OUTPUT inserted.id_mandate
VALUES(24387,'1234567','Paul','Tergeist','09/11/2015','09/11/2018',1);
您将使用列id_mandate返回记录集。如果插入失败,则记录集将为空。