0

我已经创建了两个单独的表并填充了信息。第一个表有一个称为主机名的唯一字段。每个主机名在第二个表中可能有多个记录。我已经创建了它们,并且主机名已插入两个表中。现在,我该如何连接它们?

我正在使用 MySQL 工作台。我必须在 table2 中创建外键,这个键应该是主机名。现在,如果我想在插入 table1 之前插入 table2。这可能吗?即,我的程序以在table1 之前插入table2 的信息的方式运行。插入语句有什么变化吗?在 table2 中插入时,我是否必须指定有关 table1 的任何内容?

4

2 回答 2

1

如果您有外键,则它必须始终引用有效记录或为 NULL。如果需要插入table2before table1,必须先插入table2外键列NULL的记录,再插入table1记录,最后更新table2引用到的记录table1

这是一个奇怪的类比,但可以把它想象成建造房子。如果你在打地基之前在现场建造它,你就有问题了。但是,你可以在某个地方建造它,然后建造地基,然后把房子搬到上面。

现在,在旁注中,我确实必须质疑您为什么要插入table2之前table1...

于 2012-07-14T19:16:22.030 回答
0

FOREIGN KEY 约束用于阻止您的程序执行的操作。

它不允许您创建具有主主机名表(您的表 1)中不存在的主机名值的详细记录(您的表 2)。

您要么必须更改应用程序的工作方式,要么不连接这两个表。在后一种情况下,您必须自己维护它们之间的数据完整性。

您必须定期测试详细记录中的新主机名,如果不存在则创建它们。

我怀疑您一直在表中写入日志记录,但您还需要一个主机名“主文件”来保存每个主机的信息。

如果是这种情况(或类似情况),请不要连接表并手动维护主机名主文件(即使用一些计划运行并执行 table1 维护的存储过程)。

于 2012-07-14T19:17:23.047 回答