如何在mysql

时间:2017-05-18 18:41:48

标签: mysql

我有两个表,一个叫做用户,另一个叫做个人资料。这些表中的每一个都有一个名为user_id的列。我想要做的是当我将新用户插入users表时,我想自动将users表中的新user_id复制到profiles表。我不想使用UPDATE子句,因为每次添加新用户时我都必须调用它。我认为关系会实现我想要做的事情,所以我从配置文件中引用user_id引用用户的user_id,它仍然没有自动更新。我该怎么办?如果他们不自动更新您的列,那么首先关系的重点是什么?

1 个答案:

答案 0 :(得分:1)

这可能是一个设计错误。如果这两个表中的行始终具有相同的ID,则它们可能应该是单个表。

您创建的外键仅保证profiles中存在的每一行必须与users中的行具有相同的ID。它不会导致创建这些行 - 它只是意味着如果您尝试创建一个ID不匹配的行,数据库将抛出错误。

尽管如此,可以创建触发器来执行您所描述的内容:

CREATE TRIGGER user_insert_creates_profile
    AFTER INSERT ON users
FOR EACH ROW
    INSERT INTO profile (user_id) VALUES (NEW.user_id);

但重新考虑您的设计或在您的应用中进行插入可能更好。最好避免使用触发器。