MSSQL里,通常我们的每个表都会设置一个自增ID,有时候我们需要马上知道刚刚插入的数据的ID值可以使用下面这个方法,早期的MSSQL不行的哈。
INSERT INTO 表名 (字段名) output inserted.id VALUES (插入的数据)
其实就是在VALUES的前面加上“output inserted.id”,这里需要注意的是:
1、必须在 VALUES前面使用;
2、inserted是固定的,后面那个id就是你表里的自增ID的那个字段;
这样他就会在执行完成插入后返回一个当前插入数据的ID值。
用delphi来举例使用:
vTmpTADOQ1.Close;
vTmpTADOQ1.SQL.Clear;
vTmpTADOQ1.SQL.Text :=
'INSERT INTO t_xxxxx (.....) output inserted.id as vID VALUES (.....)';
vTmpTADOQ1.Prepared:=True;
vTmpTADOQ1.Open;//这里使用Open 通常我们在使用INSERT 时是使用的ExecSQL,但这里不可以的哈
I := vTmpTADOQ1.FieldByName('vID').AsInteger; //这样可以取到ID
是不是很简单的。