- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是关于 MySQL 数据库中的引用完整性概念。由于我们的 DBA 的某种限制,我们不允许使用 MySQL 的引用完整性功能,所以我的问题是“当 MySQL 中没有引用完整性功能时,我们如何在 MySQL 中实现外键概念?”
谢谢。
最佳答案
我假设您正在使用 MyISAM 表?您几乎只能自己进行检查。
因此,如果 tableB 依赖于 tableA,那么在从 tableA 中删除之前,必须先从 tableB 中删除(或执行其他更新)。通过插入,您将在主表中创建记录,然后在从属表中创建记录。
这很麻烦,而且我发现保留 MyISAM 表的唯一原因是全文索引。如果我更多地了解您的数据库限制,我可能会提出其他建议。
<小时/>预计到达时间:
如果他限制你使用 InnoDB 表,我想知道你的 DBA。无论如何,如果他出于安全原因不允许您创建和使用 Innodb 表,那么他实际上不太可能让您使用存储过程或触发器。因此,您实际上将不得不编写一个应用程序来执行您的 CRUD 任务。某些脚本语言中的操作。
因此,您需要考虑针对每种具体情况对这些操作的限制。也许最简单的方法是映射您的数据库架构,就好像它确实强制了引用完整性一样。包括由于任何表的更改而可能发生的操作(如果有)的详细信息。操作后遗症选项有RESTRICT、SET NULL 和CASCADE。
一旦您知道数据库应该如何响应,您就可以对查询进行相应的编程。
因此,如果员工有地址,并且当员工被删除时,地址应该消失:
Innodb 版本(其中地址具有员工的外键,以及 ON DELETE CASCADE
操作)
DELETE FROM Employees WHERE employee_id=7;
MyISAM版本:
DELETE FROM Employees WHERE employee_id=7;
DELETE FROM Addresses WHERE employee_id=7;
我希望这能让事情变得更清楚一些。
关于mysql - 更新: How to implement Foreign Key concept in MySQL when we do not have referential integrity features in MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1574102/
假设我们有一个 IO 操作,例如 lookupStuff :: InputType -> IO OutputType 这可能是一些简单的事情,例如 DNS 查找,或者针对时不变数据的某些 Web 服务
我正在尝试了解关系模型的规则,该规则最初是由Edgar Codd在1970年定义的。 特别是,我对参照完整性是否属于他的关系模型感兴趣。我将尝试在下面的示例中进行演示(只是为了使这个问题更漂亮): 客
从《Functional programming in scala》一书中看到表达式的“引用透明”的定义: An expression e is referentially transparent i
在我疯狂的宇宙中,一个房间可以有很多椅子,椅子可以“属于”很多房间。 在 grails 中,它看起来像这样。椅子不应该知道它们属于哪个房间。 class Room { String name
为任何错误的术语道歉——我对计算机科学很陌生,我几乎只知道 Clojure(但我想我会说我很了解它)。 所以,我没有对此进行大量研究,但有时我发现在编写 Clojure 代码时它很有用,以便能够从该数
我的理解是,术语“referential transparency”实际上只能应用于功能代码。但是,面向对象代码中对对象的方法调用可以具有类似的属性,即方法的返回值,而方法调用后对象的状态只取决于调用
我正在使用 Spring Data JPA 开发 REST API,需要一些帮助。 我的 REST API 将处理创建组的请求,并根据请求数据将成员分配给该组。请求的 URL 将为 @PostMapp
所以我有两个简单的 bean -FatKid和Hamburgers。现在,由于我不知道的原因,我不仅需要查找某人吃过的所有汉堡包,而且还要查找谁吃了哪个特定的汉堡包。进入代码! FatKid.java
我的核心数据模型包含一个实体 Shape,它具有两个自引用关系,这意味着四个属性。一对是一对多关系 (Shape.containedBy > Shape.contains),另一对是多对多关系 (Sh
在 Ecto 迁移中实现引用自己表的外键的正确方法是什么? 例如我想创建一个表,其中任何行都可以引用同一个表中的“父”行。 (一种处理分层数据的方法;还有许多其他方法。) 但是当我在我的变更集中有这个
我在 Candidate 和许多不同类型的事件之间有一个 has_many_polymorphs 关系。特别是,Candidate 在创建时会创建一个 Created 事件。 class Candid
所以,我正在开发一个应用程序,我希望用户能够在“文件夹”中对对象进行分组。基本上: User has_many :foos Foos 不必在文件夹中,但可以在文件夹中。在这种情况下: Folder h
我有一个将行从一个数据库移动到另一个数据库的过程。由于一些循环外键引用链,我无法从旧数据库中删除行,也无法将它们插入新数据库中。 由于整个操作发生在事务中1,我希望 SQL Server 忽略引用完整
这是 my previous issue 的后续问题- 这个有点困惑,与 Telerik 数据服务更相关。 我从服务器收到的元数据缺少关联节点中的引用约束,尽管我已在模型上设置了外键属性。 因此,我正
根据更有经验的开发人员的建议,我一直将需要用户输入(表单处理、数据库管理等)的网页编码为自引用页面。对于 PHP 页面,我将表单的操作设置为 $_SERVER 预定义变量的 'PHP_SELF' 元素
命令处理程序是否也应该检查参照完整性?此常见问题解答建议您不要在聚合 ( http://cqrs.nu/Faq ) 中检查此项。不是检查某些东西是否存在验证的一部分吗? 例如,您可以拥有一个应用程序,
考虑到我通常使用 C 语言工作,我认为静态类型确实会让我在 Python 中的生活更轻松。我创建了一个这样的类: class node(object): """ properties,
你好,我有一个相当简单的关系。一名患者可以进行多次测量。我使用了 H2 文件数据库和 Hibernate。 问题:当我尝试删除患者的测量结果时,出现以下错误。 Referential integrit
我正在添加一个通过外部类构建的新实体,但出现此错误:发生引用完整性约束冲突:当依赖对象是不变的,除非它被设置为关联的主体对象。主体对象必须被跟踪并且不被标记为删除。 : 编辑:ReconFact 实体
我有一个带有 parent_id 的事件模型和 date属性: 事件.rb has_many :children, :class_name => "Event" belongs_to :parent,
我是一名优秀的程序员,十分优秀!