我想在我的web应用程序上创建一个新的用户帐户,同时在mysql中将数据同时插入到多个表中。例如,我可能有一个用于一般用户信息(如身份验证)的表,而另一个表可能包含该用户的传记信息。传记列中的外键必须与身份验证表的主键相对应。
用户将在一个表格中填写所有信息,但收集的信息将放在两个单独的表格中。我遇到的问题是生成这些表的方式与这些键对应,特别是如果我同时生成它们的话。
另一个例子是,我有一张table,上面有一张名为“就餐清单”的餐厅列表。其中一行有一个“所有食物烹饪”的列表。我可能有一个单独的表,名为“location\u dinning\u types”,列出了可能与该餐厅对应的所有食物类型,外键对应于该餐厅的主键。“locatiom\u dinning\u types”表中可能有多行。
另外,我想为每个用户生成一个不同字符的唯一主键。我想生成一个由随机字符组成的唯一键,比如fh4jnx68g4,而不是标准的auto\u incremet主键(默认情况下从1开始并递增)。
1条答案
按热度按时间dy1byipe1#
你需要
LAST_INSERT_ID()
尝试以下操作:last\u insert\u id为您提供了从最后一次插入中自动递增的id值。然后将其保存在用户定义的变量中,然后使用它填充其他表中的fk值。
即使有很多程序在执行插入操作,这也是安全的,因为每个数据库连接都会维护最后一个\u insert \u id值。
如果你想自己创造价值,你可以这样做。
您想知道如何在mysql查询语言中生成随机字符串吗?看这里。使用mysql生成一个随机唯一的8字符字符串
注意:作为主键或外键的随机字符串比自动递增整数更难有效地索引。