帮忙看看这个语句
请看下面的首两行,是从表 TblProductionOrders删除什么东西吧?下一句的DBCC CHECKIDENT看不懂,请大神解释一下。
DELETE TblProductionOrders
DBCC CHECKIDENT('TblProductionOrders',RESEED,1)
INSERT INTO TblProductionOrders
(PartNumber
,ProductionOrder
,Qty
,StartTime)
SELECT PartNumber
,ProductionOrder
,COUNT(DISTINCT SerialNumber)
,MIN(TestDateTime)
FROM TblTestData
GROUP BY PartNumber,ProductionOrder
------解决方案--------------------這句是將表 TblProductionOrders 的遞增種子設置為1,也就是 identity 下次的值就是 2 (1+1)。
DBCC CHECKIDENT('TblProductionOrders',RESEED,1)
------解决方案--------------------table_name
是要对其当前标识值进行检查的表名。 指定的表必须包含标识列。 表名必须符合标识符规则。
NORESEED
指定不应更改当前标识值。
RESEED
指定应该更改当前标识值。
http://msdn.microsoft.com/zh-cn/library/ms176057.aspx
------解决方案--------------------
当然有用了,delete删除的表种子值是不会变动的,如果你自增列插入了12345
然后delete清空了一个表,那么再继续插入值是从6开始的
通过用DBCC CHECKIDENT将种子置为1,delete后的表再插入数据时是从2开始的
其实可以用truncate table tablename,清空表数据的同时会将种子置为0
也就是再插入时是从1开始的
------解决方案--------------------不知道你的代码是不是要重置种子的意思
TRUNCATE TABLE TblProductionOrders等价于
DELETE TblProductionOrders
DBCC CHECKIDENT('TblProductionOrders',RESEED,0)
而你上面种子没有置0,而是置为了1,插入新数据时是从2开始的