首页 > 数据库 >mysql 企业表和员工表,一旦企业下面有员工就不允许删除企业。如何通过外键设置实现呢

mysql 企业表和员工表,一旦企业下面有员工就不允许删除企业。如何通过外键设置实现呢

时间:2023-12-12 21:32:24浏览次数:32  
标签:删除 记录 INT companies 外键 员工 企业 id DELETE

简述

mysql 企业表和员工表,一旦企业下面有员工就不允许删除企业。如何通过外键设置实现呢

前情提示

系统:

一说

  • 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤
  • 带有#号、删除线、不操作、不执行字样的为提示或者备份bash,实际不执行
  • 如果无法下载、无法复制,请评论后留言即可。收到消息后会第一时间回复~
  • 知识付费,1对1技术支持:


有账号的朋友,可以点个赞或者评论两句哦,评论后会获得积分奖励~

要实现当企业表(比如 companies)中有员工记录存在时,不允许删除该企业记录,你可以使用 MySQL 中的外键约束,并设置为 RESTRICT 级联操作。这将阻止在有依赖项的情况下删除主表中的记录。

首先,假设你有两个表:

  1. companies 表:存储企业信息
  2. employees 表:存储员工信息,其中包含一个外键指向 companies 表的 id
CREATE TABLE companies (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL
);

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    company_id INT,
    FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE RESTRICT
);

在这个例子中,我们在 employees 表上定义了一个外键 company_id,它引用了 companies 表的 id 列。通过设置 ON DELETE RESTRICT,当你尝试从 companies 表中删除一个企业时,如果该企业还有相关的员工记录存在,MySQL 将拒绝执行删除操作。

请注意,如果你正在使用的数据库系统不支持外键或者你的项目规范要求不在数据库层面上强制数据完整性,那么你需要在应用程序层面实现这种逻辑,确保在删除企业之前先检查并处理好相关的员工记录。

ON DELETE CASCADEON DELETE RESTRICT 是 MySQL 中两种不同的外键约束级联操作。它们之间的主要区别在于当主表中的记录被删除时,子表中相关记录的处理方式。

  1. ON DELETE CASCADE:
  • 当在主表中删除一条记录时,所有与之相关的子表中的匹配记录也会被自动删除。
  • 这通常用于强耦合的关系,其中父表和子表的数据紧密相连,删除父表的记录时通常也期望删除子表的相关记录。
  1. ON DELETE RESTRICT:
  • 当试图从主表中删除一条记录时,如果存在相关的子表记录,MySQL 将阻止删除操作。
  • 这是一种数据完整性保护措施,确保不会因为删除主表的记录而留下孤立的子表记录。
  • 如果需要删除主表记录,必须先手动删除或更新子表的相关记录。

举例说明:

假设有一个公司(companies)表和一个员工(employees)表,员工表通过外键关联到公司表。

  • 使用 ON DELETE CASCADE
CREATE TABLE companies (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL
);

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    company_id INT,
    FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE CASCADE
);

在这种情况下,当你删除一家公司时,与其相关的所有员工记录也会被自动删除。

  • 使用 ON DELETE RESTRICT
CREATE TABLE companies (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL
);

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    company_id INT,
    FOREIGN KEY (company_id) REFERENCES companies(id) ON DELETE RESTRICT
);

在这种情况下,如果你试图删除一家公司,但这家公司仍有员工记录存在,MySQL 将拒绝执行删除操作。你需要先处理好员工记录才能成功删除公司记录。

标签:删除,记录,INT,companies,外键,员工,企业,id,DELETE
From: https://blog.51cto.com/janeyork/8791290

相关文章

  • Python项目之员工管理系统-函数版
    员工管理系统#完成以下功能'''---------------员工系统---------------1:注册2:登陆3:添加员工信息4:查看指定员工信息5:查看所有员工信息6:删除指定员工信息......
  • 知名火锅连锁企业,IT 团队如何在数千家门店中先于用户发现故障
    该知名火锅连锁企业是中国领先的餐饮企业,上千家门店遍布全球,由于门店餐饮行业的特殊性,需要靠前部署服务,所以在每家餐厅中,会部署相应的服务器,及相应IT设备,本地会运行POS、会员、下单等业务。公司有众多的餐厅门店,各个门店业务流量不同,门店的IT设备由于城市、开业时间等因素,其型......
  • 一文告诉您企业为什么这么关注数字资产指纹
    数字资产指纹在互联网数字资产管理中,数字资产指纹就是数字资产的“身份证”,也是信息系统安全管理工作的基础。通过网络资产探测(指纹)可以在0day(通常是指还没有补丁的漏洞)爆发时快速匹配到受影响的信息系统;还可以发现违规开放的资产,为安全运营管理提供便利,确保安全制度的稳健实施。......
  • 【技术分享】企业网必不可少的NAT技术
    原创:厦门微思网络NAT是一种地址转换技术,它可以将IP数据报文头中的IP地址转换为另一个IP地址,并通过转换端口号达到地址重用的目的。NAT作为一种缓解IPv4公网地址枯竭的过渡技术,由于实现简单,得到了广泛应用。NAT解决了什么问题?随着网络应用的增多,IPv4地址枯竭的问题越来越严重。尽管I......
  • 企业级 Web 应用里使用 CSS 调整应用外观的一些例子
    笔者在日常工作中曾经负责过一些企业级Web应用的负责和开发,也曾经指导过一些客户的二次开发人员,通过各种方式对我们发布的企业级Web应用进行一些定制开发。所谓企业级前端应用,是指为大型企业或组织开发的前端应用,这些应用具有超过一般2C软件的技术复杂度,高度定制化和可扩展性......
  • 谈谈企业级 Angular 应用的二次开发 - 基于 Angular Component 替换的 Extensibility
    我们知道面向个人用户(toCustomer,简称2C)软件和面向企业级用户(toBusiness,简称2B)的软件,在设计和实现上都存在一些区别,比如个人软件通常注重直观的用户界面和简单易用的设计,其中用户体验是关键,因为个人软件的目标是满足个人用户的需求和偏好。想想我们每天都在刷的抖音和头......
  • 制造业CRM与信息化:提升企业竞争力的关键
    在产业升级的大背景下,传统制造业数字化转型迫在眉睫。然而,生产制造业在转型过程中难免遇到难题,这时候就需要CRM客户管理系统的帮助。本文就将为您介绍,什么是制造业CRM,以及制造业CRM的功能、作用和价格。1.制造业CRM的概念制造业CRM是一种专门为制造业企业设计的客户关系管理软......
  • 造纸企业ERP包含哪些模块?造纸企业ERP有什么用
        造纸企业规模的不同,遇到的管理问题各异,有些造纸企业存在多仓库、多平台、多车间数据协同问题,还有些造纸企业内部各个业务环节信息流动速度慢,信息沟通成本较高,不同程度影响企业的车间产能和生产成本等。同期也有不少造纸企业借助ERP系统实现财务整合、随时进行多维属......
  • 一款专业的内外网文件摆渡产品,应如何帮助企业提升协作效率?
    伴随着全球数字化转型的持续深入,数字经济的蓬勃发展,数据资产已成为非常重要的生产要素。近年来,全球数据泄密事件频发,数据泄密事件的平均成本逐年攀升。考虑到业务安全需要,绝大多数企业会考虑网络隔离,在内部划分为不同的隔离网域,内网-外网,互联网-内网,生产网-办公网,办公网-研发网隔......
  • 万界星空科技五金家具企业MES案例介绍
    五金家具行业MES解决方案MES系统如何与家具企业生产相匹配?相较于其它大多数工业软件,MES系统无疑是受企业欢迎的软件之一。MES系统处于制造生产企业信息化的核心领域,有着承上启下的作用。那MES系统如何与家具企业生产相匹配?五金家具行业的工艺特点:1、五金产品为机械加工件,加工......