解决无法删除表,提示被外键约束引用

有时想删除某个表时,提示“无法删除对象 ‘Orders‘,因为该对象正由一个 FOREIGN KEY 约束引用”,原因很简单不要急躁,它被其它表的外键引用了,所以无法删除,在此只需先找到哪些表的外键引用了该表的字段。通过系统函数就能解决(SQL Server系统函数提供了非常完善的功能,能代替我们查找和解决许多问题)。

select
    fk.name,fk.object_id,OBJECT_NAME(fk.parent_object_id) as referenceTableName
from sys.foreign_keys as fk
join sys.objects as o on fk.referenced_object_id=o.object_id
where o.name=‘被引用的表名‘

以上SQL语句能够得到某个表被哪些外键引用,并且也显示出了外键表的表名。通过外键表的表名和外键名称执行以下语句即可删除外键。

ALTER TABLE dbo.被引用的表名  DROP CONSTRAINT 外键名

另附:

EXEC sp_rename ‘tablename1‘, ‘tablenametarget‘ --重命名sql server表名

时间: 2024-07-30 22:30:59

解决无法删除表,提示被外键约束引用的相关文章

数据库使用truncate清理非常多表时碰到外键约束时怎么高速解决

问题处理思路: 1. 先将数据库中涉及到外键约束的表置为无效状态 2.待清除全然部表数据后再将外键约束的表置为可用状态 详细实现脚本: declare begin for vv_sql in (SELECT 'ALTER TABLE '|| table_name ||' DISABLE CONSTRAINT ' || CONSTRAINT_NAME alter_sql FROM USER_CONSTRAINTS where CONSTRAINT_TYPE = 'R') loop execute

Oracle表中添加外键约束

添加主键约束: ALTER TABLE GA_AIRLINE ADD CONSTRAINT PK_AIRLINE_ID PRIMARY KEY(AIRLINE_ID); 有三种形式的外键约束: 1.普通外键约束(如果存在子表引用父表主键,则无法删除父表记录) 2.级联外键约束(可删除存在引用的父表记录,而且同时把所有有引用的子表记录也删除) 3.置空外键约束(可删除存在引用的父表记录,同时将子表中引用该父表主键的外键字段自动设为NULL,但该字段应允许空值) 这三种外键约束的建立语法如下: 例如

Mysql 截断表时由于外键约束无法完成时的处理方法

而在MySQL?5.5中,存在外键约束的InnoDB表,在任何情况下都不允许进行Truncate操作,并报错(Error 1701),如果朋友你实在是有点强迫症,那么可以用下面的方式拐着弯解决: 导出数据库数据位.sql文件. 随便用个文本编辑器打开文件. 手动编辑一下.sql文件,怎样编辑相信你看了下面这个图就知道了 4.再将编辑好的.sql文件重新导入就OK了.

批量删除MSSQL 中主外键约束

转自: http://www.maomao365.com/?p=813 在制作 MSSQL同步工具的时候,发现由于主外键的约束,导致数据同步异常,所有我们需要把 读数据库里面的主外键约束,进行批量删除操作. 1 如何批量查询数据库的主外键? 在MSSQL2005以上版本中,系统提供一个系统视图 sys.foreign_keys 可以查询出系统所有的外键约束2 如何批量删除数据库的主外间键? -----------------------------------------------------

SQL Server中用SQL命令建表和主外键约束

建立dept和emp表,并用dept表中的dept_id设置为emp表的外键 create table dept ( dept_name nvarchar(20) not null, dept_address nchar(20), dept_id int constraint PK_dept primary key --dept表的主键,命名为PK_dept ) create table emp ( emp_name nvarchar(20) not null, emp_sex nchar(1)

Oracle删除表时候有外键 不能删除

SELECT    A .constraint_name,    A .table_name,    b.constraint_nameFROM    user_constraints A,    user_constraints bWHERE    A .constraint_type = 'R'AND b.constraint_type = 'P'AND A .r_constraint_name = b.constraint_nameAND A .constraint_name = UPPE

删除或清空具有外键约束的表数据报-ERROR 1701 (42000)

OS:  centos 6.3 DB:5.5.14 mysql> select database();+------------+| database() |+------------+| sakila     |+------------+1 row in set (0.00 sec) mysql> delete from actor;ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constra

Linux oracle 导入导出单个表(没有外键约束的情况下)

expdp: SQL> create directory dir_tables as '/home/oracle/tables'; SQL> grant read,write on directory dir_tables to 用户名; expdp system/system密码@SID tables=用户名.表名 directory=dir_tables dumpfile=tables.dmp logfile=tables.log impdp: SQL> create directo

sql完美删除外键约束,避免产生问题

解决无法删除表,提示被外键约束引用 有时想删除某个表时,提示“无法删除对象 'Orders',因为该对象正由一个 FOREIGN KEY 约束引用”,原因很简单不要急躁,它被其它表的外键引用了,所以无法删除,在此只需先找到哪些表的外键引用了该表的字段.通过系统函数就能解决(SQL Server系统函数提供了非常完善的功能,能代替我们查找和解决许多问题). select     fk.name,fk.object_id,OBJECT_NAME(fk.parent_object_id) as ref