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

时间:2016-03-18 13:50:09

标签: mysql sql foreign-keys primary-key

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

目前,我有两个表格 - Customer DetailsCustomer login,其中p_ID作为primary key登录,p_IDforiegn key 1}}在详细信息表中。每当有人注册时,该值设置为自动递增。但是,我不明白如何将这些链接在一起。由于它们是唯一的并且自动递增,因此无法在不手动填充它们的情况下看到链接它们的方式。

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

例如:

login表:

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

details表:

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

1 个答案:

答案 0 :(得分:1)

您的数据库结构没问题,但是您无法使用单个SQL查询在两个表中插入数据。而不是那样,您可以将事务与 <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="256dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed" android:textAlignment="gravity" android:layout_gravity="center" android:foregroundGravity="center"> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_gravity="bottom" app:tabContentStart="72dp" app:tabMode="scrollable" tools:background="@android:color/holo_orange_light"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_collapseMode="parallax" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" tools:background="@android:color/holo_green_light"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:background="@android:color/holo_blue_light"/> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|bottom" android:layout_margin="8dp" android:src="@drawable/ic_action_add_issue" app:borderWidth="0dp" app:fabSize="mini" app:layout_anchor="@id/tabs" app:layout_anchorGravity="center|left|start" tools:background="@android:color/holo_green_light"/> </android.support.design.widget.CoordinatorLayout> 函数一起使用:

LAST_INSERT_ID()

由于您的主要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; 表中的自动增量,因此您无需关心此类方法。 login表中的外键不能是自动增量,而只是普通整数。