重叠的可嵌入类型
适用于 ❌ 开源版 ✅ 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 查询中仅产生一次(该值的第二个副本将被忽略)。
反馈
您对此页面有任何反馈吗?我们很乐意听到您的声音!