我的数据库结构如下:
表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语句。那行得通吗?我可以得到总体轮廓吗?
答案 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
。