我的数据库中有三个表:
COMPANY(ID, NAME)
COUPON(ID, TITLE)
COMPANY_COUPON(COMPANY_ID, COUPON_ID)公司可以创建优惠券,所以在创建优惠券时,优惠券的ID和公司的ID都会添加到COMPANY_COUPON表中。当公司删除优惠券时,由于FOREIGN KEY,优惠券也将从COUPON和COMPANY_COUPON中删除。当我删除公司时,它也因为FOREIGN KEY从COMPANY和COMPANY_COUPON中删除了,但它的所有优惠券都留在COUPON表中,我试图添加到COUPON表FOREIGN KEY(ID) REFERENCES COMPANY_COUPON(COUPON_ID)中,但因为它我不能插入新的优惠券到COUPON表中。
将乐于回答如何创建正确的表,以及如何添加一些将有助于现有表的东西。也许一些连接可以帮助它,我真的不是很强的sql命令,对不起…
另外,我正在使用这种方法连接COMPANY_COUPON表中的COMPANY_ID和COUPON_ID,也许还有更好的方法。
@Override
public void linkCompanyCoupon(long companyID, long couponID) throws CouponSystemException {
Connection connection = pool.getConnection();
String CREATE_COUPON = "INSERT INTO COMPANY_COUPON (COMPANY_ID, COUPON_ID) VALUES (?,?)";
try (PreparedStatement pstmt = connection.prepareStatement(CREATE_COUPON)) {
pstmt.setLong(1, companyID);
pstmt.setLong(2, couponID);
pstmt.executeUpdate();
} catch (SQLException e) {
throw new CouponSystemException("Linking company to the coupon is failed. ", e);
} finally {
pool.returnConnection(connection);
}
}这个是创建优惠券,里面我用的是linkCompanyCoupon();
public void createCoupon(Coupon coupon) throws CouponSystemException {
// Checking if name of the new coupon is not duplicate
Optional<Coupon> isCouponTitleDuplicate = Optional.ofNullable(couponDBDAO.getCouponByTitle(coupon.getTitle()));
if (!isCouponTitleDuplicate.isPresent()) {
couponDBDAO.createCoupon(coupon);
companyDBDAO.linkCompanyCoupon(loggedCompany, couponDBDAO.getCouponByTitle(coupon.getTitle()).getId());
} else {
throw new CouponSystemException("Coupon title: " + coupon.getTitle()
+ " already exists in database, titles and IDs of the coupons must be unique.");
}
}https://stackoverflow.com/questions/54066332
复制相似问题