iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql中外键使用注意事项有哪些
  • 547
分享到

Mysql中外键使用注意事项有哪些

2024-04-02 19:04:59 547人浏览 安东尼
摘要

这篇文章主要介绍了Mysql中外键使用注意事项有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 外键,FOR

这篇文章主要介绍了Mysql中外键使用注意事项有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

外键,FOREIGN KEY, 这个东东,作为DBA,在oracle我们都不建议在数据库级别去实现约束,因为他的维护成本很高,
 比如你要保证索引,导入数据时你得保证先后顺序等,所以我们更推荐由应用去控制逻辑。

mysql中是更不推荐使用,不过在这里主要是说说使用过程中要注意的问题。[@more@]## 建立约束,注意命名规范 FK1,FK2,FK3 ... 如果不指定约束名,系统会自动创建一个。
create table ... ...
constraint `FK1` foreign key (`user_id`) REFERENCES  `user`(`id`)
ON DELETE CASCADE ON UPDATE CASCADE


## 相应的字段(foreign key and the referenced key ),
  Corresponding columns in the foreign key and the referenced key
    >> 必须具有相同的内部数据类型;
       must have similar internal data types inside InnoDB so that they can be compared without a type conversion.
    >> 整型字段的数据长度必须一样;
       The size and sign of integer types must be the same.
    >> 字符的长度可以不一样;
       The length of string types need not be the same. For non-binary (character) string columns
    >> 非二进制字符字段,the character set and collation 也必须一样;
       For non-binary (character) string columns, the character set and collation must be the same.

## 如果一个INNODB表有外键,那么他将不能直接转变存储引擎,除非把外键给删除了。
if an InnoDB table has foreign key constraints, ALTER TABLE cannot be used to change the table to use another storage engine. To alter the storage engine, you must drop any foreign key constraints first

 =========================================================================
  root@127.0.0.1 : test 12:21:05> alter table audit engine=myisam;
  ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
  root@127.0.0.1 : test 12:21:06>
 
 
  root@127.0.0.1 : test 12:25:40> alter table audit drop foreign key FK1;
  Query OK, 0 rows affected (0.18 sec)
  Records: 0  Duplicates: 0  Warnings: 0
 
  root@127.0.0.1 : test 12:25:46> alter table audit engine=myisam;
  Query OK, 0 rows affected (0.10 sec)
  Records: 0  Duplicates: 0  Warnings: 0
 =========================================================================

## set FOREIGN_KEY_CHECKS = 0.
  可以让表不按依赖关系导入;mysqldump就是这么做的。
  This avoids problems with tables having to be reloaded in a particular order when the dump is reloaded
   
## 删除约束,请指定正确的约束名
 
   create table user (id int ,username varchar(20) , primary key (id) ) engine=innodb ;
   
   create table audit (id int ,user_id int ,  primary key (id) ,
   constraint  foreign key (`user_id`) REFERENCES  `user`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
   ) engine=innodb ;
   
   insert into user values (1,'heyf');     insert into audit values (1,1);
   
   =========================================================================
   root@127.0.0.1 : test 11:00:19> alter table audit drop FOREIGN KEY user_id ;
   ERROR 1025 (HY000): Error on rename of './test/audit' to './test/#sql2-4847-c' (errno: 152)
   
   ###### 这里为什么会报错呢??
   
   root@127.0.0.1 : test 11:00:19>  show innodb status G
   
   LATEST FOREIGN KEY ERROR
   ------------------------
   100202 11:00:30 Error in dropping of a foreign key constraint of table test/audit,
   in SQL command
   alter table audit drop FOREIGN KEY user_id
   Cannot find a constraint with the given id user_id.
   
   ###### 系统提示说:你指定了一个错误的CONSTRAINT_NAME
   
   root@127.0.0.1 : test 11:57:02> show create table audit G
   *************************** 1. row ***************************
          Table: audit
   Create Table: CREATE TABLE `audit` (
     `id` int(11) NOT NULL default '0',
     `user_id` int(11) default NULL,
     PRIMARY KEY  (`id`),
     KEY `user_id` (`user_id`),
     CONSTRAINT `audit_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
   ) ENGINE=InnoDB DEFAULT CHARSET=utf8
   1 row in set (0.00 sec)
   
   ##### 我们看到系统自动产生的外键名字不是简单的字段名。
   
   root@127.0.0.1 : test 11:54:26> alter table audit drop FOREIGN KEY `audit_ibfk_1`;
   Query OK, 1 row affected (0.21 sec)
   Records: 1  Duplicates: 0  Warnings: 0
   

感谢你能够认真阅读完这篇文章,希望小编分享的“Mysql中外键使用注意事项有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,更多相关知识等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql中外键使用注意事项有哪些

本文链接: https://www.lsjlt.com/news/63233.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql中外键使用注意事项有哪些
    这篇文章主要介绍了Mysql中外键使用注意事项有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 外键,FOR...
    99+
    2024-04-02
  • mysql创建外键要注意哪些事项
    在MySQL中创建外键时,需要注意以下事项: 确保被引用的表和引用的表都使用了InnoDB存储引擎,因为只有InnoDB存储引擎...
    99+
    2024-03-14
    mysql
  • MySQL添加外键要注意哪些事项
    在 MySQL 中添加外键时,需要注意以下几点事项: 确保被引用的表和引用的表使用的存储引擎必须是 InnoDB,因为只有 In...
    99+
    2024-04-09
    MySQL
  • sqlserver加入外键要注意哪些事项
    在将外键添加到SQL Server数据库表时,需要注意以下几个事项: 确保外键字段与引用表的主键字段数据类型和长度匹配。 确保外键...
    99+
    2024-04-09
    sqlserver
  • Flex键盘事件注意事项有哪些
    这篇文章将为大家详细讲解有关Flex键盘事件注意事项有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Flex键盘事件注意事项注意:判断keycode时,需要调用toString()方法,然后在跟键位的...
    99+
    2023-06-17
  • 使用境外vps要注意哪些事项
    使用境外vps要注意的事项有:1、不要轻易设置端口与IP,避免无法远程连接境外VPS;2、不要下载过大软件,从而使境外VPS无法承受造成速度变慢;3、不要用第三方软件更新系统,降低境外VPS出现系统崩溃或无法正常运行的风险;4、不要安装第三...
    99+
    2024-04-02
  • 使用mysql索引的注意事项有哪些
    这篇文章主要介绍了使用mysql索引的注意事项有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mysql的优化可以从硬件设备的选择、操作...
    99+
    2024-04-02
  • MYSQL  group by使用的注意事项有哪些
    本文小编为大家详细介绍“MYSQL  group by使用的注意事项有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“MYSQL  group by使用的注意事项有哪些”文章能...
    99+
    2023-07-02
  • ajaxStart()使用注意事项有哪些
    本篇内容主要讲解“ajaxStart()使用注意事项有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajaxStart()使用注意事项有哪些”吧!   ....
    99+
    2024-04-02
  • C#中HttpClient使用注意事项有哪些
    小编给大家分享一下C#中HttpClient使用注意事项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在测试一个第三方API,准备集成在我们的网站应用中...
    99+
    2023-06-29
  • java this关键字的使用有哪些注意事项
    这篇文章主要介绍“java this关键字的使用有哪些注意事项”,在日常操作中,相信很多人在java this关键字的使用有哪些注意事项问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java this关键字的...
    99+
    2023-06-30
  • MYSQL  group by 有哪些注意事项
    目录1.group by 后面不能加 where2.having 或 group by 可单独使用3.having 和 group by 可使用别名为什...
    99+
    2024-04-02
  • mysql使用索引时的注意事项有哪些
    mysql使用索引时的注意事项有哪些?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql使用索引时需要注意:1、列中含...
    99+
    2024-04-02
  • Linux shell使用注意事项有哪些
    本篇内容介绍了“Linux shell使用注意事项有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!shell是系统的用户界面,提供了用户...
    99+
    2023-06-27
  • innodb使用的注意事项有哪些
    使用InnoDB引擎时,有一些注意事项需要注意:1. 适当设置InnoDB缓冲池大小:InnoDB使用缓冲池来缓存数据和索引,因此设...
    99+
    2023-09-15
    innodb
  • Arrays.sort()使用的注意事项有哪些
    这篇文章主要讲解了“Arrays.sort()使用的注意事项有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Arrays.sort()使用的注意事项有哪些”吧!Arrays.sort()...
    99+
    2023-06-30
  • jQuery.post使用的注意事项有哪些
    本篇内容介绍了“jQuery.post使用的注意事项有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 做SEO外链的注意事项有哪些
    这篇文章给大家分享的是有关做SEO外链的注意事项有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先我们做外链的第一要求就是外链一定要相关,相关性越好那么这个链接的作用也就越大。随着百度算法的不断更新,对于外...
    99+
    2023-06-10
  • 使用FlexSDK4时注意事项有哪些
    这篇文章将为大家详细讲解有关使用FlexSDK4时注意事项有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用FlexSDK4注意事项TWaverFlex是支持SDK4的,FlexSDK4新增了Spa...
    99+
    2023-06-17
  • Python中Enum使用的注意事项有哪些
    小编给大家分享一下Python中Enum使用的注意事项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Enum 是个类所以基本的类操作都可以用也就是我们可以添...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作