请看下面的首两行,是从表 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

解决方案 »

  1.   

    這句是將表 TblProductionOrders 的遞增種子設置為1,也就是 identity 下次的值就是 2 (1+1)。
    DBCC CHECKIDENT('TblProductionOrders',RESEED,1)
      

  2.   

    table_name
    是要对其当前标识值进行检查的表名。 指定的表必须包含标识列。 表名必须符合标识符规则。
    NORESEED
    指定不应更改当前标识值。
    RESEED
    指定应该更改当前标识值。http://msdn.microsoft.com/zh-cn/library/ms176057.aspx
      

  3.   

    那么第一行的 DELETE TblProductionOrders 岂不是什么用都没有?
      

  4.   

    這句是刪除 TblProductionOrders 所有數據
      

  5.   

    当然有用了,delete删除的表种子值是不会变动的,如果你自增列插入了12345
    然后delete清空了一个表,那么再继续插入值是从6开始的
    通过用DBCC CHECKIDENT将种子置为1,delete后的表再插入数据时是从2开始的
    其实可以用truncate table tablename,清空表数据的同时会将种子置为0
    也就是再插入时是从1开始的
      

  6.   

    那也就是下面两行代码,其实等价于TRUNCATE TABLE TblProductionOrders一行代码?
    DELETE TblProductionOrders
    DBCC CHECKIDENT('TblProductionOrders',RESEED,1)
      

  7.   

    不知道你的代码是不是要重置种子的意思
    TRUNCATE TABLE TblProductionOrders等价于DELETE TblProductionOrders
    DBCC CHECKIDENT('TblProductionOrders',RESEED,0)
    而你上面种子没有置0,而是置为了1,插入新数据时是从2开始的