清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法
来源:互联网 发布:叮当猫网络什么意思 编辑:程序博客网 时间:2024/05/08 13:55
如下解决了五个问题
1. 清空数据
2. 有外键也可以, 因为是逆向删除, 从最后一张表删除. 且使用的是delete, 因为truncate不能对有外键的表
3. 种子问题, 如果表存在种子重设为0, 如不存在就不操作
4. 加了事务, 中间报错, 有后悔机会
5. 截断日志功能, 因为使用delete, 删除后日志文件会增大, 可以不使用
- if( object_id('pr_DataClear') is not null )
- drop procedure pr_DataClear
- go
- create procedure pr_DataClear
- as
- begin transaction
- declare @cTblName varchar(128)
- declare cur_Clear cursor for select rtrim(name) from sysobjects where type = 'U' order by crdate desc
- open cur_Clear
- declare @cSQL varchar(255)
- fetch next from cur_Clear into @cTblName
- while( @@fetch_status = 0)
- begin
- set @cSQL = 'delete from ' + @cTblName
- print @cSQL
- exec( @cSQL )
- if( ident_seed(@cTblName) is not null )
- begin
- dbcc checkident( @cTblName, reseed, 0 )
- print '有种子且成功重置为1'
- end
- fetch next from cur_Clear into @cTblName
- end
- close cur_Clear
- deallocate cur_Clear
- commit
- go
- -- 清空所有表数据
- exec pr_DataClear
- -- 截断日志
- backup log LZ的数据库 with no_log
- dbcc shrinkdatabase( LZ的数据库 )
- dbcc updateusage( LZ的数据库 )
- -- 查看表空间(概数)
- select object_name(id) as 表名, (rtrim(8*reserved/1024) + 'MB') as 总量, (rtrim(8*dpages/1024) + 'MB') as 已使用,
- (rtrim(8*(reserved-dpages)/1024) + 'MB') as 未使用, (rtrim(8*dpages/1024-rows/1024*minlen/1024) + 'MB' ) as 空隙
- from sysindexes
- where indid=1
- order by reserved desc
原文出处: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是行不通的,因为truncate不能对有外键的表 ,改为delete from tablename就行,但delete会激活触发器,这也是一个问题。
0 1
- 清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法
- 清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法
- 清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法
- SQL错误:无法删除对象 '****',因为该对象正由一个 FOREIGN KEY 约束引用。
- SQL错误:无法删除对象 '****',因为该对象正由一个 FOREIGN KEY 约束引用。
- 无法截断表 'item',因为该表正由 FOREIGN KEY 约束引用。
- 无法删除对象 '产品',因为该对象正由一个 FOREIGN KEY 约束引用
- 无法删除对象 'Student',因为该对象正由一个 FOREIGN KEY 约束引用。
- ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 '' 冲突。该冲突发生于数据库 '',表 '', column ''。
- ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 '' 冲突。该冲突发生于数据库 '',表 '', column ''。
- INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX。
- INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX。
- INSERT 语句与 FOREIGN KEY SAME TABLE 约束"FK__Course__Cpno__1367E606"冲突。该冲突发生于数据库"student",表"dbo.Course",
- INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX。
- INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX。
- 数据库基本表创建 完整性约束 foreign Key
- mysql Error : Cannot truncate a table referenced in a foreign key constraint 清空具有外键约束的表时报
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
- 《Apache MINA 2.0 用户指南》第二章:基础知识
- Skype开始支持微软账号与Skype账号的解绑定
- poj3009 Curling 2.0---bfs
- chrome插件详解
- Jquery 的扩展方法总结
- 清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法
- 关于并行查询调优涉及的相关知识[收集中]
- C#对DataGridView操作
- eclipse Cannot run program "ndk-build": Launching failed
- android 制作9.png图片
- 无法在Windows资源管理器中查看此FTP站点 (Windows XP)
- 23 Android 时间和日期对话框
- AOJ0118 Property Distribution 裸dfs
- fighting