如表: ID Person Re
=====================================================
自动增长(int) VARCHAR TEXT
public int Insert(PersonMDL personMDL)
{
DAL.Insert(personMDL);
//返回ID的值?
} 请问这样可以吗??
=====================================================
自动增长(int) VARCHAR TEXT
public int Insert(PersonMDL personMDL)
{
DAL.Insert(personMDL);
//返回ID的值?
} 请问这样可以吗??
解决方案 »
- css控制Select扁平显示
- asp.net的吃从元数据
- 关于获取嵌套Datalist值的问题
- 鼠标移动到DATAGRID某个模板列时,弹出一个说明信息
- 请问2.0的登录控件大家用得多不多?
- textbox文本框怎么向查询数据库传变量数据?
- 制作访问数据库的用户控件 .net安全策略要怎么设置
- 很菜的问题,如何存取Session,请大侠帮忙……
- 我想用DATAGRID实现这样一个程序:DATAGRID列出一个数据集,每一行有一个CHECKBOX,可选中或者全选,然后点删除,弹出确认对话框,确定后
- 大家喜欢用哪种方式放置控件
- .ascx与.aspx的区别?
- 请问一下用ASP.net开发的系统,怎样可以生成html的文件,就像访问新浪一样访问到的都是静态页面?
http://msdn.microsoft.com/library/default.asp?url=/library/chs/cpguide/html/cpconRetrievingIdentityOrAutonumberValues.asp
insert into table1 values(colvalue1,colvalue2)select ident_current('table1')第二种方法:
insert into table1 values(colvalue1,colvalue2)
select @@identity
recordnum=cnn.execute(“SELECT @@IDENTITY”).fields(0).value
就行
你封装到一个事务里面就行
============================================
CREATE PROCEDURE dbo.WWFAction_Insert
@ActionCode char(50),
@ActionName varchar(50),
@SolutionCode char(20),
@SettingType int,
@IsDelete int
AS
begin tran
insert into WWFAction (ActionCode,ActionName,SolutionCode,SettingType,IsDelete)
values(@ActionCode,@ActionName,@SolutionCode,@SettingType,@IsDelete)
if @@error!=0
begin
rollback
end
else
begin
commit
end
=========================================
请问ID在哪里返回?是先执行完这个存储过程以后,再执行select @@identity SQL,还是执行完存储过程以后直接就返回ID了 ??
select SCOPE_IDENTITY()
如果table1上没有触发器啥的也可用@@identity
@ActionCode char(50),
@ActionName varchar(50),
@SolutionCode char(20),
@SettingType int,
@IsDelete int
AS
begin tran
insert into WWFAction (ActionCode,ActionName,SolutionCode,SettingType,IsDelete)
values(@ActionCode,@ActionName,@SolutionCode,@SettingType,@IsDelete) select @@IDENTITY
if @@error!=0
begin
rollback
end
else
begin
commit
end
==========================================================
CREATE PROCEDURE dbo.WWFAction_Insert
@ActionCode char(50),
@ActionName varchar(50),
@SolutionCode char(20),
@SettingType int,
@IsDelete int,
@id int output
AS
begin tran
insert into WWFAction (ActionCode,ActionName,SolutionCode,SettingType,IsDelete)
values(@ActionCode,@ActionName,@SolutionCode,@SettingType,@IsDelete)
if @@error!=0
begin
rollback
end
else
begin
select @id = @@IDENTITY
commit
end
===============================
这两种写法有什么区别 ?
DAL.Insert里是这样写的:
public int Insert(PersonMDL personMDL)
{
SqlParameter [] parms = {
Database.MakeInParam("@Person",personMDL.Person),
Database.MakeInParam("@Re",personMDL.Re)
}
int actionID = Database.RunProc("Person_Insert",parms);
return actionID;
}
//DataBase是自己封装的一个对数据库操作的类
select top 1 id from 表名 order by id desc
这样写的结果大家可想而知,我被公司录用了!
如果两个人或者更多的人同时执行insert操作 结果会怎么样?
要返回插入记录的ID值请问sp1234(我的女朋友是大美女)有何高见 ?
create table y(id int identity,b nvarchar(30))
go
create trigger xx on x after insert as
insert y(b)
select cast(getdate() as varchar(30))+'插入了'+
cast(i.id as varchar(30))
from inserted as i
go
insert y(b) values('开始测试')
insert x(b) values('测试数据')
select @@identity as [你输出的@@identity]
select * from x
go运行上面这个例子,你会明白看到 @@identity 根本驴唇不对马嘴。在insert执行时数据库很多自动运行的过程、或者函数中(例如触发器、给记录其它字段定义的默认值函数或者约束、自己启动很多监视过程等等),一旦有int identity值,那个值就被返回,而不是你想要的值。
select * from x
之后再加上一句
select * from y
就看的更清楚了!
CREATE PROCEDURE dbo.Action_Insert
@ActionCode char(50),
@ActionName varchar(50),
@ID int output
begin tran
insert into Action (ActionCode,ActionName)
values(@ActionCode,@ActionName)
set @ID = @@IDENTITY
if @@error!=0
begin
rollback
end
else
begin
commit
end
=========
一个传出参数@ID,当insert成功执行后,取得这个传出参数的值 。
这是项目经理的做法 :( ,大家有什么意见啊 ?