现在的位置: 首页 > 综合 > 正文

清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法

2013年03月17日 ⁄ 综合 ⁄ 共 1406字 ⁄ 字号 评论关闭

如下解决了五个问题
1. 清空数据
2. 有外键也可以, 因为是逆向删除, 从最后一张表删除. 且使用的是delete, 因为truncate不能对有外键的表
3. 种子问题, 如果表存在种子重设为0, 如不存在就不操作
4. 加了事务, 中间报错, 有后悔机会
5. 截断日志功能, 因为使用delete, 删除后日志文件会增大, 可以不使用

原文出处:http://topic.csdn.net/u/20090816/17/EE0FA21E-8616-4236-A9CB-8C5A3D45C9D9.html
中45楼

 

对于有外键约束的表,网上普遍说的方法:

 

EXEC
sp_MSForEachTable
'
ALTER TABLE ? NOCHECK CONSTRAINT ALL
'

--
NOCHECK Const

EXEC
 sp_MSForEachTable
'
truncate TABLE ?
'

EXEC
   sp_MSForEachTable 
'
ALTER TABLE ? CHECK CONSTRAINT ALL
'
--
NOCHECK Constraints


是行不通的,因为
trun cate不能对有外键的表 ,改为delete from tablename就行,但delete会激活触发器,这也是一个问题。

抱歉!评论已关闭.