返回信息流String[] objId = request.getParameterValues("pId");
System.out.println("you add "+objId.length+" permission to the user");
for(int i=0;i<objId.length;i++){
String insert="insert into permission_user(u_id,p_id)values(?,?)";
PreparedStatement stmtUserInfo =(PreparedStatement) conn.prepareStatement(insert);
stmtUserInfo.setInt(1, userId);
int pid=Integer.parseInt(objId[i]);
System.out.println("pid="+pid+",and i="+i);
stmtUserInfo.setInt(2,pid );
stmtUserInfo.executeUpdate();
}
像这样写,insert语句为什么会执行多次呢?即使在objId.length=1的时候也会执行两次:提示Duplicate entry
求教~
(p_id,u_id)共同作为主键,为多对多关系;数据库是mysql)
这是一条镜像帖。来源:北邮人论坛 / java / #13523同步于 2010/3/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
jdbc多对多的insert问题
bylijinnan
2010/3/15镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
(p_id,u_id)共同作为主键,为多对多关系
你想说啥,不就是联合主键吗?
Duplicate entry 原因一般是主键本来自增的,你给他赋值了。
表permission_user只有p_id,u_id这两个字段啊。
【 在 greedisgood 的大作中提到: 】
: (p_id,u_id)共同作为主键,为多对多关系
: 你想说啥,不就是联合主键吗?
: Duplicate entry 原因一般是主键本来自增的,你给他赋值了。
建表语句是这样的,求大牛帮忙看看:
drop table if exists permission_user;
create table permission_user
(
id int (8) auto_increment not null primary key,
p_id int(8) not null,
u_id int(8) not null,
unique key(p_id,u_id),
foreign key (p_id) references permission(id),
foreign key (u_id) references user(id)
);