SQl Server中的自动增加字段的处理(100分)

  • 主题发起人 主题发起人 lucker2000
  • 开始时间 开始时间
L

lucker2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用Delphi的Tquery开发一个与SQl server7的系统。其中一个表Table1中有一个字段
作为Id,采用自动增长类型,另一个字段为Field1。当我插入一条记录时候
str1:='insert into Table1(Field1) Values(''1'')';
query1.sql.clear;
query1.sql.add(str1);
query1.execsql.
记录插入成功后,却不能立即得到当前Id的值。由于是自动增加的,所以每次为了得到当前
插入的记录Id值,我不得不用'select max(id) from Table1'的方式来得到Id值和定位当前
记录。
请问大家有什么更好的办法没有?这样实在是太慢了
 
ID值是在插入后才有的,要取得ID
看来只能用'select max(id) from Table1',如果速度太慢可以考虑去掉自动增加性能
在插入前先取MAX(ID)
 
我觉得SQL Server 的自动增加字段作的不好。
 
据说可以用@@Identity来得到,但具体怎么做我也不太清楚,我是用select max(id)来作的
 
>>str1:='insert into Table1(Field1) Values(''1'')';
>>query1.sql.clear;
>>query1.sql.add(str1);
>>query1.execsql.

-- table1 对应table1
with table1 do
begin
Close;
Open;
end;
再取ID值
 
將該字段的fieldkind屬性設為fkInternalCalc類型后, 確保插入記錄成功后刷新一次即可.
 
多人接受答案了。
 
后退
顶部