当前页面: 开发资料首页 → JSP 专题 → 两个表关联,A表插入数据的同时,B表也增加一条数据,外键关联,如何实现?
两个表关联,A表插入数据的同时,B表也增加一条数据,外键关联,如何实现?
摘要: 两个表关联,A表插入数据的同时,B表也增加一条数据,外键关联,如何实现?
全部分都在这了,大家多多帮忙吧。
mysql5.0的数据库,user存储用户名密码,user_info存储这个用户详细信息。
所以,user表创建一条数据user_info也需要同时创建数据,user表的user_id更新user_info表的user_id也需要同时更新,也就是一一对应。
我现在想到的是两个表用外键关联,在user_info表的外键上加上delete cascade和update cascade,以实现同步更新和删除,现在问题是user新增数据时怎么让user_info也新增数据,并且使user_info里的user_id与user中的user_id相等,具体怎么实现呢?
表结构如下:
user表:
create table user(
user_id int unsigned auto_increment not null,
password varchar(16),
primary key (id)
);
user_info表:
create table user_info(
id int unsigned auto_increment not null,
user_id int unsigned not null,
user_email varchar(20),
primary key (id),
foreign key (user_id) references user(user_id) on delete cascade on update cascade
);
会的大侠帮忙解决一下
多谢了
我认为你写两个sql语句不就行了,不过注意主键问题
关注中。。。
编写触发器不可以吗
触发器
如果单纯是维护数据库的话,可以写触发器。
如果是做应用程序的话,建议还是把数据库的关联简化到最低,最好是单表,便于以后的数据库的移植。
那两个表之间怎么关联呢?
只用一个外键就可以了是吗?
create table user(
user_id int unsigned auto_increment not null,
password varchar(16),
primary key (id)
);
user_info表:
create table user_info(
id int unsigned auto_increment not null,
user_id int unsigned not null,
user_email varchar(20),
primary key (id)
);
在数据库中把关联关系去掉,把关系交给项目的业务层代码实现。
最好不要关联,在逻辑中实现。
我们一般这么处理:
1、数据库设置主外键约束
2、应用逻辑中使用事务,保证两个表的增删改一致,即同时增加,修改和删除