gpt4 book ai didi

mysql - 创建一个带有外键自动增量的新表?

转载 作者:行者123 更新时间:2023-11-29 13:32:38 25 4
gpt4 key购买 nike

我正在修改一个开源程序,所以我有点不知所措。这是一个基于mysql构建的跟踪个人信息的系统。

有一个表“person_per”,其中有一列“per_ID”。当添加新人时,他们会得到下一个号码。

我想要一个新表“follow_up”。我需要这个表有一个“per_ID”列。(如果它位于不同的表上,我可以有重复的名称吗?)以便任何新信息仍然链接到主记录。

我最担心的是新记录会在“follow_up”表中获得一行。看起来从属/主控可能是做到这一点的方法,但我不知道如何实现这一点。

我不确定这是否相关......

mysql> SHOW INDEXES FROM person_per;
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| person_per | 0 | PRIMARY | 1 | per_ID | A | 413 | NULL | NULL | | BTREE | | |
| person_per | 1 | per_ID | 1 | per_ID | A | 413 | NULL | NULL | | BTREE | | |
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

最佳答案

是的,您可以在两个不同的表中使用相同的列名称。您实际上不需要问这个问题,您自己测试一下很容易:

CREATE TABLE test.t1 ( per_ID INT );
CREATE TABLE test.t2 ( per_ID INT );

您可以创建一个包含 per_ID 列的表 follow_up。您可以使用外键,以便该列中的任何值都必须首先存在于引用的表 person_per 中。

CREATE TABLE follow_up (
/* perhaps other columns too */
per_ID INT,
FOREIGN KEY (per_ID) REFERENCES person_per (per_ID)
);

但这并不能保证对于引用表中的每个per_ID 值,follow_up 中都存在一行。它仅防止 follow_up 中的行具有引用表中不存在的值。

确保将行插入 follow_up 的最简单方法是运行额外的 INSERT,您可以发现使用 LAST_INSERT_ID() 生成的 per_ID功能:

INSERT INTO person_per ... /* whatever you normally insert */

INSERT INTO follow_up (per_ID) VALUES (LAST_INSERT_ID());

关于mysql - 创建一个带有外键自动增量的新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193428/

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