Select @NewID
<asp:SqlDataSource id=""runat="server"
ConnectionString="<>"
InsertCommand="INSERT INTO [表] ([字段]) VALUES 【字段】);Select @NewID=Scope_Identity();
">
主要问这个 InsertCommand分号后面Select @NewID=Scope_Identity();
写这个是要干嘛?
但是为什么执行不出来?是连着的吗?还是这么写本身是有错的?
这是别人的代码实在没看明白。请高手指教。
------解决方案--------------------ID 是自增的,在增加记录后 返回新记录的ID
------解决方案--------------------select scope_identity() 传回插入相同范围之识别资料行中的最后一个识别值。范围是一个模组:预存程序、触发程序、函数或批次。因此,如果两个陈述式在相同预存程序、函数或批次中,它们就在相同范围中。
语法:
SCOPE_IDENTITY()
传回类型:
numeric
备注:
SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 是类似的函数,因为它们会传回插入识别资料行的值。
IDENT_CURRENT 不受范围和工作阶段的限制;它只限于指定的资料表。IDENT_CURRENT 会传回在任何工作阶段和任何范围中,产生给特定资料表的值。如需详细资讯,请参阅<IDENT_CURRENT (Transact-SQL)>。
SCOPE_IDENTITY 和 @@IDENTITY 会传回目前工作阶段任何资料表中所产生的最後一个识别值。不过,SCOPE_IDENTITY 会传回只在目前范围内插入的值;@@IDENTITY 不限于特定范围。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------SCOPE_IDENTITY and @@IDENTITY return the last identity values that are generated in any table in the current session
在当前的session中返回最新的id
------解决方案--------------------这句话意思是说,你刚插入一条,刚那条的主键赋给@NewID
你这样写当然是没反应了,前面一是一个insert 后面只是一个赋值,都是没有返回值的撒
InsertCommand= "INSERT INTO [表] ([字段]) VALUES 【字段】);Select Scope_Identity(); ";
这样就OK了
这里也回复一下,哈哈
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------http://blog.csdn.net/Sandy945/archive/2010/04/01/5442624.aspx
------解决方案--------------------SCOPE_IDENTITY()受作用域的限制,只返回当前作用域中的最后一个IDENTITY值
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------<asp:SqlDataSource id=""runat="server"
ConnectionString="<>"
InsertCommand="
INSERT INTO [表] ([字段]) VALUES 【字段】);
Select @NewID=Scope_Identity();
">
这个其实没什么,其实只是两条语句而已
只是一个简单的插入语法,然后获取自增列最后返回的值,赋值给变量@NewID,
以便后面其他地方可以利用
------解决方案--------------------