-
2021-01-18 18:38:49
查看创建数据库语句
show create table table_name;
查询schema中所有外键名称然后拼接生成删除语句,再执行。
SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' DROP FOREIGN KEY ',CONSTRAINT_NAME,' ;')
FROM information_schema.TABLE_CONSTRAINTS c
WHERE c.TABLE_SCHEMA='db_name' AND c.CONSTRAINT_TYPE='FOREIGN KEY';
删除表约束
alter table table_name drop foreign key FKstne13dqw7l76ib6cr6ytwl7v;
commit;
参数配置
SET FOREIGN_KEY_CHECKS = 0;
SET GLOBAL FOREIGN_KEY_CHECKS = 0;
查看结果
SELECT @@FOREIGN_KEY_CHECKS;
更多相关内容 -
MySQL删除外键问题小结
2020-12-15 13:46:37MySQL:MySQL不能删除外键,抱错Error on rename of ./ruler/test2child to ./ruler/#sql2-298-92 (errno: 152) 曾经这是MySQL的一个bug,但是现在只是MySQL的一个不友好的地方。 例子如下: mysql> ALTER TABLE ... -
SQL语句删除和添加外键、主键的方法
2021-01-20 06:55:06–删除外键 语法:alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter table Stu_PkFk_SC drop constraint FK_c –添加外键 语法:alter table 表名 add ... -
数据库删除所有外键脚本.sql
2019-05-30 15:37:24Mysql数据库如何删除某一个数据库的所有外键并不删除相应的索引,一个sql脚本解决,无需知道外键的名称。 -
MySQL删除有外键约束的表数据方法介绍
2020-12-16 10:06:42在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot deleteorupdatea parent row: aforeignkeyconstraintfails (...) 这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置... -
MySQL删除外键约束问题。
2019-05-26 10:20:54当我们在一个表中添加字段约束的时候: ALTER TABLE product ADD CONSTRAINT product_fk FOREIGN ...会认为我的外键约束名称为product_fk, 然后当我们想删除时: ALTER TABLE product DROP FOREIGN KEY product_...- 当我们在一个表中添加字段约束的时候:
ALTER TABLE product ADD CONSTRAINT product_fk FOREIGN KEY(category_id) REFERENCES category(id);
- 会认为我的外键约束名称为product_fk, 然后当我们想删除时:
ALTER TABLE product DROP FOREIGN KEY product_fk;
- 会出现以下的错误:
<e>Query: alter table product drop foreign key product_fk Error Code: 1025 Error on rename of '.\web_day09\product' to '.\web_day09\#sql2-2330-1' (errno: 152)
-
这是因为字段的外键约束名并不是product_fk 。
-
我们在数据库中执行一下命令:
SHOW CREATE TABLE product
- 控制台会显示:
Table Create Table product CREATE TABLE `product` ( `pid` varchar(32) NOT NULL, `pname` varchar(40) DEFAULT NULL, `price` double DEFAULT NULL, `category_id` varchar(32) DEFAULT NULL, PRIMARY KEY (`pid`), KEY `category_id` (`category_id`), CONSTRAINT `product_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`cid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
-
从建表语句中我们发现外键约束名称是:
product_ibfk_1 -
然后我们再执行外键删除操作:
<n>Query: alter table product drop foreign key product_ibfk_1 0 row(s) affected
- 删除成功。
-
Oracle 级联删除外键
2021-05-08 17:58:12本教程将教大家如何在Oracle中使用级联删除外键。使用CREATETABLE语句定义级联删除以下是使用CREATETABLE语句定义级联删除的语法:CREATE TABLE table_name(column1 datatype null/not null,column2 datatype null/...所谓的级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除。本教程将教大家如何在Oracle中使用级联删除外键。
使用CREATE TABLE语句定义级联删除
以下是使用CREATE TABLE语句定义级联删除的语法:
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
ON DELETE CASCADE
);
示例:
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id)
ON DELETE CASCADE
);
以上示例中,我们在supplier表创建了一个名为supplier_pk的主键,这个主键只包含supplier_id字段。
然后在products表上创建了一个名为fk_supplier的外键,该表根据supplier_id字段引用supplier表的supplier_pk字段。
由于级联删除,当supplier表中的记录被删除时,products表中相应的所有记录也将被删除,因为这些记录具有相同的supplier_id值。
此外,我们也可以创建一个具有多个字段的外键(带级联删除),如下例所示:
CREATE TABLE supplier
( supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
);
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
CONSTRAINT fk_supplier_comp
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name)
ON DELETE CASCADE
);
在这个例子中,fk_foreign_comp外键基于两个字段:supplier_id和supplier_name字段引用supplier表。
根据supplier_id和supplier_name删除supplier表中的记录时,外键fk_foreign_comp上的级联删除会导致products表中的所有对应记录也会被级联删除。
使用ALTER TABLE语句定义级联删除
除了CREATE TABLE语句外,我们还可以用ALTER TABLE语句定义级联删除,具体语法如下:
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
ON DELETE CASCADE;
示例:
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id)
REFERENCES supplier(supplier_id)
ON DELETE CASCADE;
在本例中,我们创建了一个名为fk_supplier的外键(带级联删除),该外键基于supplier_id字段引用supplier表。
此外,我们也可以创建一个具有多个字段的外键(带级联删除),如下例所示:
ALTER TABLE products
ADD CONSTRAINT fk_supplier
FOREIGN KEY (supplier_id, supplier_name)
REFERENCES supplier(supplier_id, supplier_name)
ON DELETE CASCADE;
-
sql server ql语句删除外键和删除
2021-01-19 10:18:54sql server ql语句删除外键和删除alter table tablename add constraint ordersrelationshipforeign key mployeeidreferences employees (employeeid)on delete cascadeon update cascadealter...sql server ql语句删除外键和删除
alter table tablename add constraint ordersrelationship
foreign key mployeeid
references employees (employeeid)
on delete cascade
on update cascade
alter table books add constrait 外健名--指定一下名
add foreign key (isbn) references readers(readerid);
alter table books drop constraint 外健名
设置表mybbs中的authorid为sql外键的方法及步骤进行了详细说明,希望对您能够有所启迪。
设置表mybbs中的authorid为sql server外键,参照author表的id字段,直接使用transact sql语句,过程如下:
--增加表mybbs(authorid)的sql server外键约束fk_mybbs_author,表mybbs中的authorid受表author中的sql server主键id约束:
begin transaction
alter table dbo.mybbs add constraint fk_mybbs_author
foreign key (authorid)
references dbo.author([id]) on update cascade on delete cascade
--删除sl外键约束fk_mybbs_author:
--alter table dbo.mybbs drop constraint fk_mybbs_author
--rollback
commit transaction
上面on update cascade,on delete cascade两个选项,指明以后author表的id字段有delete,update操作时,mybbs表中的id也会被级联删除或更新。如果没有选中,是不可以对author表中已被mybbs表关联的id进行update或者delete操作的。
看个实例
create table `board` (
`board_id` int(11) not null auto_increment,
`catalog_id` int(11) not null default '0',
`board_name` varchar(100) character set utf8 not null default '',
`board_descrip` varchar(255) character set utf8 default null,
`board_type` varchar(30) character set utf8 default null,
primary key (`board_id`),
key `外键` (`catalog_id`),
constraint `外键约束` foreign key (`catalog_id`) references `catalog` (`catalog_id`)on delete cascade on update cascade //级联删除的关键语句
) engine=innodb auto_increment=13 default charset=gbk;
sql外键两种用途:
1/, 最常用的一种: 减少重复数据.表a中拥有外键,表b的数据基本是不允许删除的.这时选择对 insert 和 update 强制关系即可.
2/,其次,是增加一个从属表. 如果表a删除一条记录时,表b中也随着删除一条相关联的记录,那么外键关系中,表a的主键是表b的外键。这种关系,实际上表b是表a的从属表(即表a是父表),选择对 insert 和 update 强制关系时,如果向表b中插入数据,表a中必须已经存在对应的记录。选择级联删除相关的字段时,删除表a中的一条记录,就会删除对应的表b中的一条记录。
*/
?>
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
-
MySQL删除外键定义的方法
2021-01-18 18:38:49MySQL外键在定以后,如果我们不再需要这个外键,可以进行删除操作,下面就为您介绍MySQL删除外键定义的方法,供您参考。不知道大家有没有发现,在定义外键的时候articles.member_id外键比articles.category_id子句多... -
MySQL删除外键列
2021-02-10 01:17:23今天遇到一个要删除外键列的问题,我发现:Sql代码show create table userfans;Java代码| userfans | CREATE TABLE `userfans` (`id` int(11) NOT NULL AUTO_INCREMENT,`status` int(11) DEFAULT NULL,`update_time`... -
MySql中如何删除外键?
2021-01-18 22:49:13我在lesson表中没注意,一下设置了2个外键,导致出现了严重的问题,此表因为有外键导致不能删除,但是此表的添加了外键的列导致我查表出现错误的信息:1.lesson表:我现在想删除sid这个列的外键:别的同学的机子都... -
SQL-基础 约束(添加-删除外键)
2022-03-13 21:19:33分类:非空约束(not null),唯一约束(unique),主键约束(primary key),默认约束(default),检查约束(check),外键约束(foreign key)。 二.运用 创建约束表:(也可以直接在创建新表目录,选择创建约束,不需要写... -
MySQL删除表的时候忽略外键约束的简单实现
2020-12-16 14:16:18删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库... -
mysql oracle 删除外键约束
2021-05-08 01:59:12oracle 删除外键约束 禁用约束 启用约束oracle 删除外键约束 禁用约束 启用约束 执行以下sql生成的语句即可 删除所有外键约束 Sql代码 select 'alter table '||table_name||' drop con ...备忘:MySQL中修改表中某列... -
为什么mysql不允许删除外键?
2021-04-20 10:00:48有时我们不能删除mysql外键,我们该怎么办?这就是为什么mysql不允许你删除外键和解决方案,希望能帮助有需要的朋友!1.在建立一个外键之后,MYSQL将自动建立一个同名的索引2.删除外键时,如果同名索引被“删除”,... -
postgresql 删除外键
2020-05-13 11:15:47postgresql外键命令: ALTER TABLE table_name DROPCONSTRAINT foreing_key; 注意有时候table_name 和 foreing_key 需要加双引号; 添加外键命令: ALTER TABLE table_name1 ADD CONSTRAINT foreing_key_... -
SQL中怎么创建外键和删除外键
2020-03-29 23:05:26删除外键约束(1)获取外键约束名称5. 小结 1.什么是外键约束 外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性 2.对于已经存在的... -
mysql查询/删除 外键/索引
2022-03-21 22:22:40以表名为story,外键值FK68AF8F580E5B1为为例, SHOW CREATE TABLE story; SHOW INDEX FROM story; DROP INDEX FK68AF8F580E5B1ED ON story; ...ALTER TABLE story DROP FOREIGN KEY FK68AF8F580E5B1; -
mysql删除外键约束
2020-11-04 12:31:09在python中:Column(类型,ForeignKey(‘绑定的表.列名’,ondelete=‘约束类型’)) 外键约束有: RESTRICT:父表的数据被删除时会阻止删除,默认...SET NULL:父表数据被删除,子表的外键数据会被设置为NULL。 ... -
MySQL数据库基础——多表操作:添加与删除外键
2021-03-03 20:00:23MySQL数据库基础入门——day10一、外键外键用于建立加强两个表之间的联系,引入外链后,外键只能插入参照列存在的值,参照列被参照的值不能被删除,这就保证了数据的参照完整性。1.为表添加外键约束:想要真正连接两... -
解决数据库的索引乱码问题,先删除外键约束,再删除主键约束及其索引
2021-01-27 12:19:00其他表的外键: select * from user_constraints t where t.r_constraint_name='XPK岗位信息表' 对应的外键的表 ING_PERSON_POSITION_MAP ,外键约束名: FK_ING_PERSON_POSITION_MAP2 --2 删除外键约束 ... -
增加外键,修改外键&删除外键, mysql中添加外键约束遇到一下情况,外键条件,联合查询,子查询,-- exists...
2021-02-08 05:18:26增加外键创建表的时候增加外键:在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段)-- 创建外键create table my_foreign1(idint primary key auto_increment,namevarchar(20)not null ... -
无法删除外键约束
2021-04-29 16:52:14外键删除失败 解决方法 删除外键之前要先查出字段所对应的外键名 **2. **通过外键名删除外键 -
SQL Server 2012 外键约束(定义外键、删除外键)
2019-04-21 20:00:26文章目录准备知识定义外键使用SSMS工具定义外键使用SQL方式定义外键删除外键使用SSMS工具删除外键方式一:在对象资源管理器中删除主键方式二:在表设计器中删除主键使用SQL方式删除外键 准备知识 外键... -
MySQL添加外键、删除外键方式,MySQL删除外键报错快速解决方案
2021-01-19 05:43:41本文将从创建MySQL表单时添加外键、给已存在表单添加外键、删除外键3个方面进行介绍,属于何种情况可快速定位。创建MySQL表单时添加外键外键是外部引用,因此作为外键的表一定是已经存在的,此处以ta、tb两个表做一...