我必须在SQL 2012中将行插入两个表中。
我正在使用jdbcTemplate。 我将两个查询都写在同一个方法中,因为我希望它全部或全部都不做。即两个查询均通过或两个查询均失败。
在数据库内部,我定义了一个外键约束。 (随附的数据库架构图)。
现在,数据库抛出错误“ INSERT语句与FOREIGN KEY约束冲突”。
我需要:
我希望第二个。您能帮我一些代码吗?
public class SavetoDBDaoImpl implements SavetoDBDao {
private JdbcTemplate jdbcTemplate;
public static final Logger logger = LoggerFactory
.getLogger(SavetoDBDaoImpl.class);
@Autowired
public void setJdbcTemplate(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void saveSchedInstr(UserDetails userDetails) throws Exception {
String insertIntoUserInstanceStatus = "INSERT INTO UserInstanceStatus(UserID,CreateTS,InsertTs,EmployeeID,StatusCd) VALUES(?,?,?,?,?)";
String insertIntoUserStatusDetails = "INSERT INTO UserStatusDetails(UserID,CreateTS,InsertTs,EmployeeID, StatusCd, STATE, HEADER, BODY, RESPONSETIME, PROTOCOL) VALUES(?,?,?,?,?,?,?,?,?,?)";
/*
* Store status into table UserInstanceStatus
*/
jdbcTemplate.update(insertIntoUserInstanceStatus, userDetails.getUserId(),LocalDateTime.now(),
LocalDateTime.now(), userDetails.getEmployeeId(),
userDetails.getState());
/*
* Store status details into table UserStatusDetails.
*/
try {
jdbcTemplate.update(insertIntoUserStatusDetails, userDetails.getUserId(),
LocalDateTime.now(), LocalDateTime.now(),
userDetails.getEmployeeId(), userDetails.getStatusCd(), userDetails.getState(),
userDetails.getHeader().toString(), userDetails.getBody().toString(),
userDetails.getResponseTime(), userDetails.getStatus()
.getProtocol());
logger.debug("Successfully stored user details into DB");
} catch(Exception e) {
e.printStackTrace();
}
}
}