这个是最近做的一个练习 ,现在我这里有2个表 --1.创建图书信息表. CREATE TABLE BOOKINFOS 

BOOKID NUMBER(38) NOT NULL,  --书的ID编号 
BNAME VARCHAR2(30) NOT NULL, --书名 
CONCERN VARCHAR2(60),        --出版社 
PRICE NUMBER NOT NULL,      --价格 
TYPEID NUMBER(38) NOT NULL,  --书的分类 
PRIMARY KEY ( BOOKID ) 
)TABLESPACE BOOKS; ----创建图书借阅表 CREATE TABLE LEASE 

DAYID NUMBER(38)  NOT NULL,  --ID 
STIME CHAR(20) NOT NULL,      --借书时间 
BOOKID NUMBER(38) NOT NULL,  --书的ID号 
USERID NUMBER(38) NOT NULL,  --用户的ID号 
FOREGIFT NUMBER(38) NOT NULL, --押金 
PRIMARY KEY ( DAYID ) 
)TABLESPACE BOOKS; ----------------------------------- 
现在想实现的是在对 LEASE 表做插入数据时,用触发器判断押金是否小于书价,如果小于则提示错误信息。其中ID插入的是序列,避免出现输入错误,一开始我用的是异常处理,但是却不允许运行序列~~~~~~~ 
--序列 
CREATE SEQUENCE SEQ_LEASE_ID 
INCREMENT BY 1 
START WITH 1 
NOMAXVALUE 
NOCYCLE; 
这个是异常处理 --插入图书借阅数据时检查押金是否小于书的价格 TRI_FOREGIFT CREATE OR REPLACE PROCEDURE INSERT_LEASE (DAYID1 NUMBER , STIME1 CHAR , BOOKID1 NUMBER , USERID1 NUMBER , FOREGIFT1 NUMBER ) 
AS 
BOOKID_C BOOKINFOS.BOOKID%TYPE; 
PRICE_C  BOOKINFOS.PRICE%TYPE; FOREGIFT_SIZE EXCEPTION; 
BEGIN 
SELECT BOOKID , PRICE INTO BOOKID_C,PRICE_C FROM BOOKINFOS WHERE BOOKID = BOOKID_C; IF( BOOKID1 = BOOKID_C AND FOREGIFT1 < PRICE_C ) THEN 
RAISE FOREGIFT_SIZE; 
END IF; INSERT INTO LEASE VALUES ( DAYID1 ,STIME1 ,BOOKID1 ,USERID1 ,FOREGIFT1 ); 
EXCEPTION 
WHEN FOREGIFT_SIZE THEN 
DBMS_OUTPUT.PUT_LINE('押金不能低于书价。'); 
END; 
/ ------------------------------------------------------------ 
基本问题就是这些了 ,谁会的话请教教~~