----订单表
CREATE TABLE DD_ORDER
(
ORDER_ID VARCHAR2(10) PRIMARY KEY NOT NULL, ---订单编号,主键
USER_ID VARCHAR2(10) NOT NULL, ---用户编号,外键,引用自用户表主键
REAL_NAME VARCHAR2(10) NOT NULL, ---收货人姓名
TEL VARCHAR2(20) NOT NULL, ---收货人电话
ADDRESS VARCHAR2(200) NOT NULL, ---收货人地址
);
CREATE TABLE DD_ORDER_DETAIL
(
DETAIL_ID VARCHAR2(10) PRIMARY KEY NOT NULL, ---自增编号,主键
ORDER_ID VARCHAR2(10) NOT NULL, ---订单编号,外键,引用自订单表主键
PRODUCT_ID VARCHAR2(10) NOT NULL, ---商品编号,外键,引用自商品表主键
ORDER_TOTAL NUMBER(5,0) NOT NULL, ---订单数量
PRICE NUMBER(10,2) NOT NULL, ---成交单价
);
// 生成订单表语句
String sql1 = "INSERT INTO DD_ORDER VALUES (ORDER_AUTOID.NEXTVAL,?,?,?,?)";
//生成订单详情表语句
String sql2 = "INSERT INTO DD_ORDER_DETAIL VALUES (DETAIL_AUTOID.NEXTVAL,?,?,?,?)";
由于订单表ORDER_ID是自增主键,我在java中执行完插入订单表操作后,应该如何写插入订单详情表的语句,使两者能通过ORDER_ID关联?(简言之,如何得到刚插入订单表的ORDER_ID)
在一个事务里,你的订单没提交,订单详情理论上是获取不到订单id的。
很简单的办法,不用自增id作为订单号。也不建议用自增id作为订单号
举个栗子:你可以用UUID(保证订单号唯一性即可,同时最好有一定的业务含义),创建一个随机的UUID,同时插入到订单表和订单详情表就ok。关于订单号生成策略,网上很多,自行了解。
不建议自增id做订单号: