MySql多对多,怎么插入中间表

user_info和group_info,更新数据后可以让数据成对应关系插入到user_group

img

我百度上看了很多教程,但是还是不明白,我应该怎么做可以让插入user_group的数据保持一致性。

两张表的数据,怎么维护的。
在数据库端维护,就用触发器实现。

从你这个3个表的关系来看,应该要有3个维护操作,分别对应这3张表

  1. user可以单独创建
  2. group也可以单独创建
  3. 然后再多一步,用户选择一个user和一个group进行关联,后台就往关系表中插入一条记录(可能存在一个user对应多个group的情况)。

但是,如果你这个关系表就这么3个字段,而且user和group是一对一的关系,那么单独做这张表没有意义的,还不如在user表里再加一个gno字段,并修改一下操作流程

  1. 新建group,后台插入一笔group记录
  2. 新建user,并选择一个group关联到user(也可以为空group,后期可以修改),此时后台插入一笔user记录,里面已经包含了gno字段
建user_group的uno、gno为外键即可。如uno、gno数据不存在则无法插入表user_group。user_group表的数据必须单根据业务场景插入,不存在说写入uesr_info、group_info就能自动生成user_group信息,因为不知道user_no应该匹配哪个group_no。
以下为Oracle语句给user_group创建外键:
ALTER TABLE user_group
ADD CONSTRAINT fk_uno
  FOREIGN KEY (uno)
  REFERENCES usr_info(uno);