truncate table //删除表中的所有数据,让标识从零开始

 

sqlserver 数据库获取刚刚添加记录的自动增长的主键编号

select @@identity

select * scoPe_Identity()

select IDENT_CURRENT('Comment')

它们都返回插入到标识列中的值,

IDENT_CURRENT不受作用域和会话的限制,而受限于指定的表。

IDENT_CURRENT返回为任何会话和作用域中的特定表所生成的值。

SCORE_IDENTITY 和@@IDENTITY返回当前会话中的任何白哦内所生成的最后一个标识,但是SCOPE_IDENTITY只返回插入到当前作用域中的值;@@IDENTITY不受限于特定的作用域。

例如:有两个表Table1和Table2,并且在Table1上定义了INSERT触发器,当将某行插入Table1时,触发器被激发,并在Table2中插入一行。该方案演示了两个作用域:在Table1上的插入,以及在T2通过触发器的插入。

 

假设Table1和Tabel2都有标识列,@@identity和scope_IDENTITY将在Table1上的INSERT语句的最后返回不同的值。@@IDENTITY将返回在当前会话中的任何作用域内插入的最后一个标识列的值,这是在Table2中插入的值。SCOPE_IDENTITY将返回在Table1中插入的IDENTITY的值,这是在同一个作用域内发生的最后的插入。如果在任何INSERT语句的作用于作用域的标识列之前调用SCOPE_IDENTITY()函数,则该函数将返回null.

如果语句和事务失败。它们会更改表的当前标识,从而是标识类中的值出现不连贯的现象.即使未提交试图向表中插入值的事务,也永远无法回滚标识值。