1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法

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

时间:2020-04-28 07:37:55

相关推荐

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

数据库|mysql教程

清空,数据库,错误,因为,该表,正由,FOREIGN,KEY

数据库-mysql教程

注册表读写增强模块源码,vscode没保存能恢复吗,轻量级ubuntu,测试tomcat通不通,c 自带sqlite,网页设计标准规范 文字,serv u无法链接服务器,js 工作流插件,前端画布框架,爬虫重启器,如何下载php,鄄城SEO,springboot新版本,花瓣网网站模板,网页微信浮动,仿腾讯云论坛模板,织梦后台search.php漏洞,安卓页面滚动效果,合同管理系统代码,万能表单小程序lzw

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

mfc 五子棋源码,ubuntu 回收容量,tomcat项目加jar包,数据爬虫炒股,php文本随机显示,酉阳智能化seo推广大概多少钱lzw

学校html网站源码,ubuntu中卸载jre,一个项目有两个tomcat,java爬虫框架jsonp,php中怎么给图片添加水印,台州seo资源lzw

如下解决了五个问题

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

/u/0816/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会激活触发器,这也是一个问题。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。