Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MySQL创建表在DDL语句中添加额外行

MySQL创建表在DDL语句中添加额外行
EN

Stack Overflow用户
提问于 2020-01-15 13:51:00
回答 1查看 95关注 0票数 0

我将MySQL与InnoDB引擎结合使用。我创建了一个包含外键的新表,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE rooms (
    id INTEGER NOT NULL AUTO_INCREMENT, 
    my_id VARCHAR(15), 
    house_id INTEGER, 
    PRIMARY KEY (id), 
    FOREIGN KEY(house_id) REFERENCES houses (id) ON DELETE CASCADE
)

当我使用DB工具(如DBeaver )查看我的数据库和表的详细信息时,我看到我的外键house_id缺少ON DELETE CASCADE设置,而且外键house_id似乎有2列条目。

DBeaver还显示了该表的DDL,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `rooms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `my_id` varchar(15) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `house_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `house_id` (`house_id`),
  CONSTRAINT `rooms_ibfk_1` FOREIGN KEY (`house_id`) REFERENCES `houses` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

为什么DDL有额外的行KEY 'house_id' ('house_id').?这条额外的行还会导致我的外键在我的house_id表查看器中显示两个DBeaver列。如果我去掉这个,我的ON DELETE CASCADE就会被正确设置。

我使用ORM,所以我无法控制CREATE TABLE语句,所以我只是想至少了解这里发生了什么。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-15 13:59:02

来自MySQL关于外键约束的文档

MySQL需要对外键和引用键进行索引,这样外键检查就可以快速而不需要表扫描。在“引用”表中,必须有一个索引,其中将外键列按相同顺序列为第一列。如果引用表不存在,则自动在该表上创建这样的索引。

因为house_id是在外键约束中使用的,而且它还没有索引,所以会自动添加索引。

我不认为DBeaver是两次展示专栏。它显示了列和索引,它们碰巧有相同的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59760074

复制
相关文章
time:Python的时间时钟处理
time库运行访问多种类型的时钟,这些时钟用于不同的场景。本篇,将详细讲解time库的应用知识。
luckpunk
2023/09/29
2770
time:Python的时间时钟处理
可以改变的量-变量
变量用来记录数值。使用变量进行代数计算,则该变量中数值可以随着程序的逻辑计算而改变。当计算全部结束后,再将数值拿出展示给用户。
星哥玩云
2022/09/14
3650
可以改变的量-变量
手动创建线程池
我们之所以要手动创建线程池,是因为 JDK 自带的工具类所创建的线程池存在一定的弊端,那究竟存在怎么样的弊端呢?首先来回顾一下 JDK 中线程池框架的继承关系:
用户4283147
2022/10/27
7250
手动创建线程池
RocketMQ手动创建Topic
创建Topic使用的命令 mqadmin updateTopic: .\mqadmin updateTopic Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in
青山师
2023/05/05
2.2K0
前端|创建简单动态时钟
动态时钟,就是通过CSS工具的美化效果和引入JavaScript,让网页呈现出钟表的动态效果,让它能够记录时间。通过改变背景颜色、指针颜色和阴影效果,让时钟呈现不同的颜色。
算法与编程之美
2020/08/10
1.7K0
前端|创建简单动态时钟
eclipse创建java项目无反应
系统升级到win10,重新安装eclipse,发现设置了原来的工作文件夹后,点击Java Project和Project都没有反应
全栈程序员站长
2022/11/17
1.1K0
eclipse创建java项目无反应
手动创建 SpringBoot Web 应用
1. 快速创建 ---- 官网位置 2. 手动创建过程(以IDEA为例) ---- 1. 创建Maven项目: File -> New -> Project 选择 Maven,然后点击 Next GroupId 一般为域名倒写,ArtifactId 一般为项目名,Version 为版本号,填写完毕之后,点击 Next 选择项目位置,点击 Finish 2. 添加依赖 3. 配置资源目录 File -> Project Structure Module -> Sources 将 src 设置成 Sources
山海散人
2021/03/03
9180
AI可以预测患者对免疫疗法的反应
发表在“The Lancet Oncology”上的一项研究首次证实,AI可以处理医学图像以提取生物学和临床信息。通过设计算法并将其开发用于分析CT扫描图像,Gustave Roussy,CentraleSupélec,Inserm,Paris-Sud University和TheraPanacea(专门从事AI的放射治疗和精密医学)的医学研究人员创建了一个所谓的放射学特征。该特征定义了肿瘤的淋巴细胞浸润水平,并提供了患者免疫治疗功效的预测评分。
AiTechYun
2018/09/26
6400
AI可以预测患者对免疫疗法的反应
Feign-手动创建FeignClient
在Feign-请求不同注册中心的服务中,提到,如果需要请求不同注册中心的服务,可以设置@FeignClient的url属性。
用户2146693
2019/08/08
3.8K0
Feign-手动创建FeignClient
Unity基础系列(一)——创建一个时钟(GameObjects与Scripts)
这篇教程是一个基础教程,会和大家一起创建一个简单的时钟,并且给它加上一些组件脚本用来显示当前时间。这篇教程的意义并不在于怎么学会写出一个时钟,而是教你认识Unity的编辑器。当然如果你之前已经接触过或者用过Unity了并且能自己找到场景窗口,那么就算是有个很好的开始了。
放牛的星星
2020/07/15
2.3K0
Django 创建一个返回当前时间的页面
修改 settings.py 文件, 把上面手动创建的 templates 文件夹路径添加进去
py3study
2020/01/17
9530
手动创建macOS恢复分区
因为某些原因需要制作macOS的恢复盘,但是苹果官方的OS X 恢复磁盘助理早已不支持APFS文件系统。
幻影龙王
2021/09/12
2.5K0
手动创建macOS恢复分区
长时间运行后无法创建session的问题
Jira Ticket: https://jira.mongodb.org/browse/SERVER-42827
MongoDB中文社区
2020/07/22
1.9K0
创建基本时钟周期约束
Xilinx建议把时序约束和物理约束分开来写。(但是必须有一个作为target) 时序约束用于综合和实现,物理约束用于实现。 1时钟周期 2占空比 3相位 Waveform={上升沿时刻,下降沿
瓜大三哥
2018/02/24
1.2K0
创建基本时钟周期约束
世界上最短的时钟代码!更短的,有木有?
该文介绍了如何用 Processing 语言实现时钟的绘制。首先介绍了 Processing 语言的用途,然后给出了一段示例代码,接着详细讲解了时钟绘制代码的实现细节。最后给出了一个在线演示链接,读者可以在线查看该时钟的绘制效果。
IMWeb前端团队
2017/12/29
1.2K0
时钟偏移是如何影响建立时间和保持时间的?
时钟偏移反映了时钟信号到达同一时序路径上的不同寄存器的时钟端口之间的时间差异,如下图所示。时钟clk从源端到达寄存器FF1的时间点为Tclk1,到达寄存器FF2的时间点为Tclk2,故时钟偏移即为Tclk2与Tclk1的差。若clk源端记为零时刻点,那么Tclk1和Tclk2分别对应发送时钟路径延迟和捕获时钟路径延迟。
Lauren的FPGA
2023/08/18
6380
时钟偏移是如何影响建立时间和保持时间的?
世界上最短的时钟代码!更短的,有木有?
Processing.js作者是John Resig,这是继Jquery之后,他的第二个力作。
IMWeb前端团队
2019/12/03
1.5K0
gPTP时钟同步(时间同步)协议简介
• 教官首先发出“齐步—–走”的命令,大家听到“齐步”二字后,开始调整动作,最终所有人实现动作同步。
NTP网络同步时钟
2022/03/09
9.1K1
gPTP时钟同步(时间同步)协议简介
点击加载更多

相似问题

对R中具有特定列条件的行进行计数

147

MySQL -对具有不同条件的组中的每一行进行计数()

22

对具有条件的多个列进行DISTINCT计数

15

具有两个不同列的条件的数据的条件计数公式

20

对某些日期具有相同列值的行进行计数

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文