首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

帮忙见见这个语句

2013-02-05 
帮忙看看这个语句请看下面的首两行,是从表 TblProductionOrders删除什么东西吧?下一句的DBCC CHECKIDENT看

帮忙看看这个语句
请看下面的首两行,是从表 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 TblProductionOrders 岂不是什么用都没有?

当然有用了,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开始的

热点排行
Bad Request.