重叠的可嵌入类型
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
CREATE TABLE order_item ( order_id BIGINT NOT NULL REFERENCES order product_id BIGINT NOT NULL REFERENCES product, item_no INT NOT NULL, quantity INT NOT NULL, -- Each order_item has a unique-per-order item_no, which acts as a sequential number CONSTRAINT pk_order_item PRIMARY KEY (order_id, item_no), -- Each product can only have one order_item CONSTRAINT uk_order_item UNIQUE (order_id, product_id) );
两个UNIQUE约束重叠。如果它们由一个org.jooq.EmbeddableRecord表示,每个(例如,由于使用嵌入式键功能),那么两个可嵌入类型都会引用 ORDER_ID 列。jOOQ 将确保 ORDER_ID 列不会在 SQL 语句中生成两次,在禁止这种情况发生的地方,例如在 INSERT 语句中
INSERT INTO order_item ( order_id, product_id, item_no, quantity ) VALUES ( 12, 15, 1, 10 );
create.insertInto(ORDER_ITEM)
.columns(
ORDER_ITEM.PK_ORDER_ITEM,
ORDER_ITEM.UK_ORDER_ITEM,
ORDER_ITEM.QUANTITY
)
.values(
new PkOrderItemRecord(12L, 15L),
new UkOrderItemRecord(15L, 1),
1
)
.execute();
尽管值15L已被提供两次,但它在生成的 SQL 查询中仅产生一次(该值的第二个副本将被忽略)。
反馈
您对此页面有任何反馈吗?我们很乐意听到您的声音!