首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在外键的子表中插入行?

是否可以在外键的子表中插入行?
EN

Stack Overflow用户
提问于 2019-01-07 05:59:59
回答 2查看 56关注 0票数 1

我的数据库中有三个表:

代码语言:javascript
复制
COMPANY(ID, NAME)  
COUPON(ID, TITLE)  
COMPANY_COUPON(COMPANY_ID, COUPON_ID)

公司可以创建优惠券,所以在创建优惠券时,优惠券的ID和公司的ID都会添加到COMPANY_COUPON表中。当公司删除优惠券时,由于FOREIGN KEY,优惠券也将从COUPONCOMPANY_COUPON中删除。当我删除公司时,它也因为FOREIGN KEYCOMPANYCOMPANY_COUPON中删除了,但它的所有优惠券都留在COUPON表中,我试图添加到COUPONFOREIGN KEY(ID) REFERENCES COMPANY_COUPON(COUPON_ID)中,但因为它我不能插入新的优惠券到COUPON表中。

将乐于回答如何创建正确的表,以及如何添加一些将有助于现有表的东西。也许一些连接可以帮助它,我真的不是很强的sql命令,对不起…

另外,我正在使用这种方法连接COMPANY_COUPON表中的COMPANY_IDCOUPON_ID,也许还有更好的方法。

代码语言:javascript
复制
@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();

代码语言:javascript
复制
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.");
    }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54066332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档