当前位置: 首页 > 面试题库 >

使用带有和不带有FOREIGN KEY的REFERENCES之间的区别?

雷逸仙
2023-03-14
问题内容

基本上,我想知道在使用带有或不带有外键的REFERENCES之间的区别。

我有以下两个示例:

CREATE TABLE Employee 
(
     id        INT,
     name      VARCHAR(50),
     birthYear INT,
     boss      INT REFERENCES Employees(id),
     worksAt   INT NOT NULL REFERENCES Department(id) ON DELETE CASCADE,
     PRIMARY KEY (id,worksAt)
);

范例2:

CREATE TABLE Department 
(
      id                INT PRIMARY KEY,
      name              VARCHAR(50),
      numberOfEmployees INT,
      location          INT NOT NULL,
      country           INT NOT NULL,
      manager           INT,
      FOREIGN KEY (location,country) REFERENCES Location(locId,countryId),
      UNIQUE KEY (manager)
);

我要问的是,为什么第二个示例为什么使用FOREIGN KEY关键字,而第一个示例仅使用REFERENCES。

另外,第一个似乎引用了自己(我认为Employees中的s是一个错误)。如果是这样,如果引用自己,为什么要使用REFERENCES?


问题答案:

恭喜你!您偶然发现了MySQL的一种古怪怪癖。第一种语法绝对不执行任何操作。是 无声的 ,是的, 无声地 忽略了。

此外,InnoDB不识别或不支持将引用定义为列规范一部分的“内联引用规范”(按照SQL标准定义)。仅当作为单独的FOREIGN
KEY规范的一部分指定时,InnoDB才接受REFERENCES子句。对于其他存储引擎,MySQL Server解析并忽略外键规范。

距离create table文档的一半还差一点。



 类似资料:
  • 问题内容: 查看量角器文档,我发现有一个选项可以不使用Selenium服务器使用flag 来运行量角器。 使用硒服务器和不使用硒服务器运行量角器测试之间的区别是什么,除了后者仅支持Chrome,Firefox? 问题答案: 首先,目前,您有 5种不同的内置选项/方式来连接浏览器驱动程序 : 指定在本地启动Selenium独立服务器 指定连接到正在运行的硒服务器(本地或远程) 设置并连接到Sauce

  • 问题内容: 我是Spring-boot(版本1.3.6)和Quartz的新手,我想知道使用Spring- scheduler 进行任务之间有什么区别: 和石英方式: 在代码中: 和sheduler: Quartz是否提供了更灵活的方式来定义Jobs,Triggers和Scheduler,或者Spring Scheduler还有其他更好的方法? 问题答案: Spring Scheduler是一个抽象

  • 问题内容: 我有一个侦听端口的小型TCP服务器。在调试时,我通常会CTRL-C服务器以终止进程。 在Windows上,我可以快速重新启动服务,并且套接字可以重新启动。在Linux上,我必须等待几分钟,然后bind()成功返回 当bind()失败时,它返回errno = 98,正在使用的地址。 我想更好地了解实现之间的差异。Windows肯定对开发人员更友好,但是我有点怀疑Linux在做“错误的事情

  • 本文向大家介绍磁带和磁盘之间的区别,包括了磁带和磁盘之间的区别的使用技巧和注意事项,需要的朋友参考一下 磁带和磁盘都是非易失性磁性存储器的类型,用于存储数据。根据体系结构和功能,我们可以区分磁带存储器和磁盘存储器。以下是磁带存储器和磁盘存储器之间的重要区别。 序号 键 磁带存储器 磁盘存储器 1 定义 磁带是非易失性存储器的一种类型,使用薄塑料带来存储数据,并且由于数据要存储在带上,因此数据读写速

  • 问题内容: 刚开始(再次)使用实质性UI并做出反应。有两个软件包material-ui和@ material-ui,这是截至2019-07年的最佳起点(最新)吗? 我认为它基于… https://material-ui.com/getting- started/installation/ 。GIT仓库位于https://github.com/mui-org/material- ui 简单的问题,希