SQL批量删除含有外键的表的方法

数据库 SQL Server
SQL批量删除表时,如果表有外键,就不能直接删除,下面将为您介绍SQL批量删除含有外键的表的方法,供您参考,希望能够帮助到您。

SQL批量删除表时,如果表有外键,就不能直接删除,下面将为您介绍SQL批量删除含有外键的表的方法,供您参考,希望能够帮助到您。

写法一:

set xact_abort on
begin tran
DECLARE @SQL VARCHAR(99)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT 'alter table '+ OBJECT_NAME(FKEYID) + ' drop constraint ' + OBJECT_NAME(CONSTID) FROM SYSREFERENCES
--删除所有外键
OPEN CUR_FK
FETCH CUR_FK INTO @SQL
WHILE @@FETCH_STATUS =0
 BEGIN
  EXEC(@SQL)
  FETCH CUR_FK INTO @SQL
 END
CLOSE CUR_FK
DEALLOCATE CUR_FK
-- 删除所有表
DECLARE CUR_TAB CURSOR LOCAL FOR
SELECT 'DROP TABLE '+ NAME FROM SYSOBJECTS WHERE XTYPE='U' -- AND NAME LIKE 'xx%'
OPEN CUR_TAB
FETCH CUR_TAB INTO @SQL
WHILE @@FETCH_STATUS =0
 BEGIN
  EXEC(@SQL)
  FETCH CUR_TAB INTO @SQL
 END
CLOSE CUR_TAB
DEALLOCATE CUR_TAB#p#
commit tran

写法二

DECLARE @SQL VARCHAR(99),@TBL VARCHAR(30),@FK VARCHAR(30)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT OBJECT_NAME(CONSTID),OBJECT_NAME(FKEYID) FROM SYSREFERENCES
--删除所有外键
OPEN CUR_FK
FETCH CUR_FK INTO @FK,@TBL
WHILE @@FETCH_STATUS =0
BEGIN
SELECT @SQL='ALTER TABLE '+@TBL+' DROP CONSTRAINT '+@FK
EXEC(@SQL)
FETCH CUR_FK INTO @FK,@TBL
END
CLOSE CUR_FK
DECLARE CUR_FKS CURSOR LOCAL FOR
SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U'
OPEN CUR_FKS
FETCH CUR_FKS INTO @TBL
WHILE @@FETCH_STATUS =0
BEGIN
SELECT @SQL='DROP TABLE ['+@TBL+']'
EXEC(@SQL)
FETCH CUR_FKS INTO @TBL
END
CLOSE CUR_FKS

责任编辑:段燃 来源: 互联网
相关推荐

2010-10-19 17:28:08

SQL SERVER外

2010-11-10 11:37:29

SQL Server删

2010-09-02 10:53:21

SQL删除

2010-09-13 14:05:09

sql server外

2010-09-25 13:16:51

SQL Server外

2010-09-02 10:02:06

SQL删除

2010-09-25 11:50:47

sql server外

2010-09-13 13:58:29

sql server外

2010-09-13 13:25:44

sql server外

2011-03-22 12:59:18

SQLOracle外键约束

2010-08-04 09:55:34

LINQ to SQL

2010-11-12 15:19:06

Sql Server外

2019-11-05 08:20:13

MySQL数据库外键

2010-10-09 10:04:48

MySQL定义外键

2010-11-22 09:43:07

MySQL定义外键

2010-06-17 17:50:31

SQL Server外

2010-09-13 13:44:22

sql server外

2010-09-02 11:34:51

SQL删除

2010-10-22 16:48:49

SQL删除所有表数据

2010-09-01 16:47:18

SQL删除
点赞
收藏

51CTO技术栈公众号