如何返回数据条新增记录的自动编号呢?(sqlserver数据库)

时间:2021-02-22 21:47:15
请问向有自编号字段的表(sqlserver数据库)添加一条记录,怎么能够获得该记录的自编号呢?

10 个解决方案

#1


如果不是多用户同时用的话,最大得编号就是了

#2


老大,就是多用户的,有办法么?
或者还是在设计数据库的时候能通过什么关联来设置?

#3


--參考下列:
create table student(id int identity(1,1) not nll,name varchar(10) not null)
go

--以下在bcb中
void __fastcall Button1Click(TObject *Sender)
{
int cur_id; //取得編號
Query1->Close();
Query1->SQL->Text="insert into student(name) select '張華'";
Query1->Prepae();
Query1->ExecSQL();

//获得该记录的自编号
Query1->Close();
Query1->SQL->Text="select SCOPE_IDENTITY()";
Query1->Prepae();
Query1->Open();
cur_id=Query1->Fields->Fields[0]->AsInteger;
ShowMessage("剛才新增學生的ID為:"+AnsiString(cur_id));

}

#4


如果有多台客户机同时输入的话,会出问题么?

#5


多用户的写入操作:
每次只允许一个用户对数据库进行写操作,在添加记录之前,先对数据库上锁,使其他用户不能写入。等你添加完成后,取出编号,再解锁。使其他用户可对数据库操作。这样就不会出现混乱,可以取到编号。

#6


多用户操作数据库是可以同时读数据库内容,但是每次只能有一个用户对数据库进行写操作,以免出现问题。解决的办法就是每次有用户操作之前,先对数据库上锁,等此用户写完后,再解锁。可以读上锁的数据库数据,但是不能写上锁的数据库数据。

#7


应该……
用ADO。
用类似:

ADOQryTmp->FieldByName("ABC")->AsString = "AAA"
……
等语句初始完值后。

来个

ADOQryTmp->Post();

然后再回取

ADOQryTmp->FieldByName("ID")->AsInteger//ID为自动编号字段。

就应该可以得到ID的值。

注意的是中间不能断开和关闭ADO。

以上是本人想法,没有测试。

#8


直接返回@@identity不就完事了.

#9


@@identity?
是怎么回事情?

#10


@@identity?
是怎么回事情?
能具体点么?

#1


如果不是多用户同时用的话,最大得编号就是了

#2


老大,就是多用户的,有办法么?
或者还是在设计数据库的时候能通过什么关联来设置?

#3


--參考下列:
create table student(id int identity(1,1) not nll,name varchar(10) not null)
go

--以下在bcb中
void __fastcall Button1Click(TObject *Sender)
{
int cur_id; //取得編號
Query1->Close();
Query1->SQL->Text="insert into student(name) select '張華'";
Query1->Prepae();
Query1->ExecSQL();

//获得该记录的自编号
Query1->Close();
Query1->SQL->Text="select SCOPE_IDENTITY()";
Query1->Prepae();
Query1->Open();
cur_id=Query1->Fields->Fields[0]->AsInteger;
ShowMessage("剛才新增學生的ID為:"+AnsiString(cur_id));

}

#4


如果有多台客户机同时输入的话,会出问题么?

#5


多用户的写入操作:
每次只允许一个用户对数据库进行写操作,在添加记录之前,先对数据库上锁,使其他用户不能写入。等你添加完成后,取出编号,再解锁。使其他用户可对数据库操作。这样就不会出现混乱,可以取到编号。

#6


多用户操作数据库是可以同时读数据库内容,但是每次只能有一个用户对数据库进行写操作,以免出现问题。解决的办法就是每次有用户操作之前,先对数据库上锁,等此用户写完后,再解锁。可以读上锁的数据库数据,但是不能写上锁的数据库数据。

#7


应该……
用ADO。
用类似:

ADOQryTmp->FieldByName("ABC")->AsString = "AAA"
……
等语句初始完值后。

来个

ADOQryTmp->Post();

然后再回取

ADOQryTmp->FieldByName("ID")->AsInteger//ID为自动编号字段。

就应该可以得到ID的值。

注意的是中间不能断开和关闭ADO。

以上是本人想法,没有测试。

#8


直接返回@@identity不就完事了.

#9


@@identity?
是怎么回事情?

#10


@@identity?
是怎么回事情?
能具体点么?