如何将记录插入到具有用户ID作为外键的表中

时间:2019-03-24 06:49:28

标签: mysql database foreign-keys primary-key

我的数据库结构如下:

表1:客户

| userid | username | password      |   email           | 
|  1     | bob      | mypassword123 | bob@gmail.com     |

请注意,“ userid”是此表中的主键

表2:帐户余额

| userid   | balance |
|    1     |   100   |

请注意,accountbalance表中的“ userid”是客户表中“ userid”字段的外键。

创建新帐户时,我不仅希望在客户中创建新行,而且还希望在accountbalance中创建相应的行以提供100($ 100)的起始值,但是问题是怎么办我知道用户名是什么吗?

我考虑过运行查询以使用用户名查找ID,然后在accountbalance中执行INSERT INTO语句。那行得通吗?我可以得到总体轮廓吗?

2 个答案:

答案 0 :(得分:0)

这取决于您使用的数据库。 Mysql具有LAST_INSERT_INSERT_ID()函数,您可以在插入后调用该函数(只需调用SELECT LAST_INSERT_INSERT_ID()),您将获得最后插入的行的ID(如果您的ID定义为AUTO_INCREMENT)。如果您使用postgres,则可以执行插入返回ID。像INSERT INTO customerts(...) VALUES(...) RETURNING userid之类的东西。

但是正如您提到的,如果您的username是唯一的,我将在插入后使用select使用此属性,因为它是数据库无关的。

答案 1 :(得分:0)

您可以使用mysql的trigger

delimiter |
CREATE TRIGGER temp AFTER INSERT ON customers
  FOR EACH ROW
  BEGIN
    INSERT INTO accountbalance SET userid = NEW.userid;
  END;
|  
delimiter ;

ref:https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html

在创建表或稍后进行编辑时,将balance表中accountbalance字段的默认值设置为100