mysql - SQL - 当用户注册时更新两个表

标签 mysql sql foreign-keys primary-key

我正在尝试在 Android 中创建一个预订应用程序。我有一个连接到的 mysql 数据库。

目前我有两个表 - 客户详细信息客户登录,其中登录中的p_ID作为主键 和相同的 p_ID 是详细信息表中的外键。每次有新人注册时,该值都会设置为自动递增。但是我不明白如何将它们链接在一起。由于它们是唯一的并且自动递增,因此我无法在不手动填写的情况下找到链接它们的方法。

所以我的问题是:我这样做完全错了吗?我应该手动设置 ID 吗?例如,当用户注册时,将登录表链接到一般客户详细信息的正确方法是什么?如何在维护匹配 ID 的同时添加到两个表?

例如:

登录表:

P_ID (PK) | username | password
-------------------------------
1         | me       | me123

详细信息表:

name | age | location | P_ID (FK)
---------------------------------
john | 40  | UK       | 1

最佳答案

您的数据库结构正常,但您无法使用单个 SQL 查询在两个表中插入数据。相反,您可以将事务与 LAST_INSERT_ID() 函数一起使用:

BEGIN;
    INSERT INTO login (`username`, `password`)
        VALUES('me', 'me123');
    INSERT INTO datails (`P_ID`, `name`, `age`, `location`) 
        VALUES(LAST_INSERT_ID(), 'john', '40', 'UK');
COMMIT;

由于您的主 ID 在您的 login 表中是自动增量的,因此使用这种方法您根本不需要关心它。 details表中的外键不能是自增的,而只能是普通整数。

关于mysql - SQL - 当用户注册时更新两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36086145/

相关文章:

sql - 识别 NULL 并分配位图

sql - 在 BEGIN/END TRANSACTION 内执行存储过程

Mysql 将列从 'allow null' 更改为 'not null' 并设置值

mysql - 防止 1 :n database relation 中的不一致

php - 最后从 MySQL PHP 插入相应的记录 ID

mysql - 为每个用户更新 n 条记录

mysql - 配置: error: invalid MySQL root directory

sql - sql中变量的数据类型大小

php - MySQL问题 ORDER BY `user_id` IN (1,2,3) AND `name`

MySQL和数据文件加密