SQL SERVER的简单问题(100分)

  • 主题发起人 主题发起人 panjf
  • 开始时间 开始时间
P

panjf

Unregistered / Unconfirmed
GUEST, unregistred user!
表A,有一个字段设为ID,int型,自增型
用DELETE删除表A的所有内容后,再添加,ID却不从1开始。
用Truncate Table命令在查询分析器上删除提示
>>无法截断表'table1',因为该表正由 FOREIGN KEY 约束引用。
有什么办法可以让清空表中的数据后ID还从1开始?
 
重新建表应该可以吧
 
不是吧[:(]没点简单的办法?
 
同意lanbing1400
 
先删除ID字段,再建立!
 
同意ZRWeng,
 
如果表的标识符列经常执行删除操作,标识值间可能会产生断缺,删除的标识值不能再使用。
要避免出现这类断缺,请勿使用 IDENTITY 属性。
这是微软的回答,没有办法,只有重新建表或修改字段,别无他法!
 
先去掉相关的 FOREIGN KEY
 
先去掉进入表结构修改界面中,修改自增为"否"保存退出,再进入将设定自增.
 
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带
WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不
能激活触发器。

TRUNCATE TABLE 不能用于参与了索引视图的表。
 
“有一个字段设为ID,int型,自增型
用DELETE删除表A的所有内容后,再添加,ID却不从1开始”
自增字段由数据库自动维护
 
数据库中的许多设置都是存放在系统数据表中,
我想如果能够找到记录那个表 IDENTITY 字段值的存放位置,不就可以改了吗?
这只是我的想法, 我没有找到放到什么位置的, 有谁知道吗?
 
用一个命令把ID置1,不过我现在也不知道这个命令是什么,我想总应该有这么一个命令的
要不,就强制给ID赋一个值1然后再使用该表.
很不好意思,我也正遇到这个问题,现在还没有解决.
 
这个问题没有办法解决,好像这是自增字段的缺点:)
 
我怎么看不到问题
 
修改字段类型,再改回去
 
删表吧,删记录还不一定有删表来得快!
 
我回避使用自增型字段﹐正是因為這個問題。可用下面方法來解決記錄
唯一性﹕
CREATE Proc sfrInsertPart
@ItemNo Char(13),
@CoNo Char(15),
@JoNo Char(10),
@JoCnt Numeric(18, 2),
@ItemName VarChar(30),
@PrtFlag Char(1),
@DeptNo Char(5),
@Memo VarChar(50)
As
Declare @RecID Char(16)
Select @RecID =
Cast(Year( GetDate()) As Char(4)) +
Cast(Month( GetDate()) As Char(2)) +
Cast(Day( GetDate()) As Char(2)) +
Cast(DatePart(Minute, GetDate()) As Char(2)) +
Cast(DatePart(Second, GetDate()) As Char(2)) +
Cast(DatePart(MilliSecond, GetDate()) As Char(3)) + 'E'

Insert Into sfrPart(RecID, ItemNo, CoNo, JoNo, JoCnt, ItemName, PrtFlag, DeptNo, Memo)
Values(@RecID, @ItemNo, @CoNo, @JoNo, @JoCnt, @ItemName, @PrtFlag, @DeptNo, @Memo)
 
多人接受答案了。
 
后退
顶部