产生新订单方式1,用表ordermeta存储下一个订单号
涉及对这个表的查询和更新,然后插入新的订单
. "Submit order, provide reference # back"
.Retrieve next order #
SELECT nextnum FROM ordermeta; 1 I/O, S
.Increment next order #
UPDATE ordermeta SET nextnum = nextnum + 1; 1 I/O;S->X
.Insert new order
INSERT INTO orders VALUES(nextnum, ...) 1 I/O
.Return nextnum to user
.Deadlock, 3 SQL Stmts, 3 I/O, single row
产生新的订单方式2,使用序列产生订单号
.Use SEQUENCE/IDENTITY
INSERT INTO order VALUES(NEXT VALUE FOR orderseq, ...);
SET ordernum = PREVIOUS VALUE FOR orderseq;
.No Deadlock, 2 SQL statements, 1 I/O, single row only
产生新的订单方式3,使用序列产生订单号,一个SQL实现更为简洁
.Use SELECT FROM INSERT
SELECT ordernum INTO :ordernum FROM NEW TABLE(INSERT INTO orders VALUES(NEXT VALUE FOR orderseq,...));
.No Deadlock, 1 I/O,1 SQL Stmt, set oriented