gpt4 book ai didi

mysql - 更新: How to implement Foreign Key concept in MySQL when we do not have referential integrity features in MySQL?

转载 作者:行者123 更新时间:2023-11-29 06:23:36 25 4
gpt4 key购买 nike

我的问题是关于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com