我用trigger 来实现 referential integrity:CREATE OR REPLACE TRIGGER CustomerID_Check
BEFORE INSERT OR UPDATE OF lngCustomer_Id ON tblVehicle
FOR EACH ROW WHEN(new.lngCustomer_Id IS NOT NULL)
DECLARE
Dummy INTEGER;
Invalid_CustomerNumber EXCEPTION;
Valid_CustomerNumber EXCEPTION;
CURSOR Dummy_cursor(CN NUMBER) IS
SELECT lngcustomer_id FROM tblCustomer@FIT5043A
WHERE lngcustomer_id=CN
FOR UPDATE OF lngcustomer_id;
BEGIN
OPEN Dummy_cursor(:new.lngCustomer_Id);
FETCH Dummy_cursor INTO Dummy;
IF Dummy_cursor%NOTFOUND THEN
raise_application_error(-20001,'The customer ID is invalid.');
ELSE
RAISE Valid_CustomerNumber;
END IF;
CLOSE Dummy_cursor;
EXCEPTION
WHEN Invalid_CustomerNumber THEN
CLOSE Dummy_cursor;
DBMS_OUTPUT.PUT_LINE('Customer number is invalid');
WHEN Valid_CustomerNumber THEN
CLOSE Dummy_cursor;
END;当我输入一个不存在的customer ID 外键时,sql\plus返回
ORA-20001: The customer ID is invalid.
ORA-06512: at "S21377928.CUSTOMERID_CHECK", line 13
ORA-04088: error during execution of trigger 'S21377928.CUSTOMERID_CHECK'现在我想让java client 端捕捉到 oracle raise的ORA-20001错误,请问各位大大 怎么实现
谢谢各位大虾,郁闷好久了