【问题标题】:Delete and insert instead update删除并插入而不是更新
【发布时间】:2013-11-20 22:25:16
【问题描述】:

我有一个用户有很多地址和很多电话。 我使用mysql和spring。 当我更新用户时,我会删除其地址和电话,并插入数据。

更新用户 删除地址 删除手机

插入地址 插入手机

create table user(
  user_id INT NOT NULL AUTO_INCREMENT,
  usertitle varchar(100),
  hasphones boolean,
  PRIMARY KEY (user_id)
);

create table address_user(
  address_user_id INT NOT NULL AUTO_INCREMENT,
  addresstitle varchar(100),
  addressstr varchar(5000),
  showcolumn boolean,
  usephones boolean,
  user_id int not null,
  PRIMARY KEY (address_user_id),
  KEY `user_id` (`user_id`),
  CONSTRAINT `address_user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
);


create table phone_user(
  phone_user_id INT NOT NULL AUTO_INCREMENT,
  typeParameter int,
  phonelabel varchar(25),
  user_id int not null,
  PRIMARY KEY (phone_user_id),
  KEY `user_id` (`user_id`),
  CONSTRAINT `phone_user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
);

我收到此错误

ex = (org.springframework.web.util.NestedServletException) org.springframework.web.util.NestedServletException:

请求处理失败;嵌套异常是 org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [插入 address_user (addresstitle, addressstr, showcolumn, usephones, user_id) 值 (?, ?, ?, ?, ?)];

无法添加或更新子行:外键约束失败 (base.address_user, CONSTRAINT address_user_ibfk_1 FOREIGN KEY (user_id) REFERENCES user (user_id)); 嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:

删除java代码

StringBuffer sb = new StringBuffer();
sb.append(" delete from address_user where user_id = ? ");
jdbcTemplate.update(sb.toString(), id);

StringBuffer sb = new StringBuffer();
sb.append(" delete from phone_user where user_id = ? ");
jdbcTemplate.update(sb.toString(), id);

插入代码

StringBuffer sb = new StringBuffer();
sb.append(" insert into phone_user (");
sb.append(" typeparameter, phonelabel, user_id ) ");
sb.append(" values (?, ?, ?) ");
jdbcTemplate.update(sb.toString(), phone.getTypeParameter().getValue(), phone.phonelabel(),    phone.getUser_id());

StringBuffer sb = new StringBuffer();
sb.append(" insert into address_user (");
sb.append(" addresstitle, addressstr, showcolumn, usephones, user_id ) ");
sb.append(" values (?, ?, ?, ?, ?) ");

j dbcTemplate.update(sb.toString(), address.getAddressTitle(), address.getAddressStr(), address.getShowColumnName(), address.getUsePhones(), phone.getUser_id());

我不太明白,我不做更新,我删除和插入。

【问题讨论】:

  • 请添加所有相关的Java代码

标签: mysql database spring


【解决方案1】:

我会确保您在 address_user 表的插入查询中具有正确的 address_user.user_id。此外,尝试从 MySql 管理控制台(或任何其他可用于直接访问数据库的数据库工具)中进行查询,以验证它是否正常。

错误提示“无法添加或更新...”,所以我认为插入失败。

【讨论】:

    【解决方案2】:

    该错误表明 Foreign Key 错误,这意味着您正试图在引用其他不存在的表上的注册表的表中插入某些内容。

    您尝试在 address_user 表上插入的 user_id 在 user 表上不存在。所以检查一下。

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多