Php 如何更新其他相关表中的主键/外键?

Php 如何更新其他相关表中的主键/外键?,php,mysql,database,foreign-keys,primary-key,Php,Mysql,Database,Foreign Keys,Primary Key,墙 墙标识(P) 墙名 墙视图 wall_下载 墙\缩略图\路径 (4,'wall4','125','574','../../thumbnail_wall4.jpg') 类型 类型识别码 键入您的姓名 (“1”,“桌面”) ('2','Phone') (“3”、“平板电脑”) 墙型 墙壁标识(P)(F) 类型识别码(P)(F) (4,1) 以上是我拥有的表格,我想做的是从walls表格中自动获取wall\u id=4,并将其存储在wall\u types表格中,与types表格中的t

  • 墙标识(P)
  • 墙名
  • 墙视图
  • wall_下载
  • 墙\缩略图\路径
4,'wall4','125','574','../../thumbnail_wall4.jpg'

类型

  • 类型识别码
  • 键入您的姓名
“1”,“桌面”
) (
'2','Phone'
) (
“3”、“平板电脑”

墙型

  • 墙壁标识(P)(F)
  • 类型识别码(P)(F)
4,1

以上是我拥有的表格,我想做的是从
walls
表格中自动获取
wall\u id=4
,并将其存储在
wall\u types
表格中,与
types
表格中的
type\u id
相同。如何做到这一点?实现这一点的代码(PHP代码)或SQL语句是什么?谢谢

注:

  • wall\u id
    中的
    wall\u类型
    参考
    wall\u id
    中的
    walls
    表格

  • 类型中的
    类型id
    参考
    类型id
    中的
    类型

如果要“自动”执行此操作,可以使用触发器更新关系。
另一种方法是删除墙类型中的关系,并使用更新的值重新创建。

下面的查询在墙类型表中插入一个新关系,其中“1”来自用户输入(用户选择的“桌面”):

如果要在插入新的“墙”行后立即执行此操作,而该行的id(偏离路线)未知,则可以使用LAST_INSERT_id(),该行将包含最后插入的id,因此需要在“墙”插入查询后立即执行此查询:

INSERT INTO wall_types (wall_id, type_id) VALUES (LAST_INSERT_ID(),1);

你说的自动是什么意思?在“墙类型”表中插入之前,始终需要知道所需的类型id。该值需要来自某个地方(例如用户输入),所以我不知道您所说的“自动”是什么意思?walls表中wall_id的值将来自walls表本身,因为它是自动递增的,因此,如果上一条记录的wall_id=4,下一条记录的wall_id=5,我想将其添加到wall_类型表中,并且类型将由上传者通过选择复选框来指定。因此,如果上传者选择Desktop作为类型,它将从类型表中获取1,并将其与wall_id=5一起存储在wall_类型中,这样新记录将被删除(5, 1)您可以在添加walls行的查询之后立即执行此操作。有点像这样。因为我将用一个脚本更新表。这是最有效的解决方案吗?是的,我认为是!没有必要为此创建mysql触发器,这对于您想要的有点过火,这让您更好地了解发生了什么g、 我可以使用LAST_INSERT_ID()连续查询吗?因为我将用相同的wall_ID更新其他几个表。LAST_INSERT_ID()提供数据库中最后插入的ID(主键)。因此,如果在它之后执行另一个查询,它可能会被覆盖。在这种情况下,可以使用mysql(I)\u INSERT_ID将ID存储在php变量中(见:)
INSERT INTO wall_types (wall_id, type_id) VALUES (LAST_INSERT_ID(),1);