前提:
CREATE TABLE Booking ( id INTEGER NOT NULL, date_made DATE, reserved_until TIMESTAMP, price DECIMAL(15, 2) NOT NULL, Purchase_id INTEGER, PRIMARY KEY(id))
create sequence booking_seq start with 1 increment by 1 nomaxvalue;方法一:利用Spring的org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementerOracleSequenceMaxValueIncrementer incr = new OracleSequenceMaxValueIncrementer(dataSource, "booking_seq"); public int getNewBookingId() { return incr.nextIntValue(); }针对不同的数据库Spring提供了不同的支持类。方法二:使用数据库本身的触发器CREATE OR REPLACE TRIGGER tib_booking BEFORE INSERT
ON BOOKING FOR EACH ROW
DECLARE
integrity_error EXCEPTION;
errno INTEGER;
errmsg CHAR(200);
dummy INTEGER;
FOUND BOOLEAN;BEGIN
-- Column "ID" uses sequence booking_seq
SELECT booking_seq.NEXTVAL INTO :NEW.ID FROM dual;-- Errors handling
EXCEPTION
WHEN integrity_error THEN
RAISE_APPLICATION_ERROR(errno, errmsg);
END;测试:INSERT INTO BOOKING(date_made,price) VALUES(SYSDATE,22222);
COMMIT;