在將數據插入表之前,哪種方式更好地驗證數據的輸入,使用CHECK約束還是使用if語句?有更好的方法來驗證它嗎?在INSERT語句中使用CHECK約束來驗證數據是一種很好的做法
1)
DECLARE
INVALID_DATE EXCEPTION;
...
-- Check if date is valid
IF TO_DATE(dt,'DD/MM/YYYY') > TO_DATE('10/10/2010','DD/MM/YYYY')THEN
RAISE INVALID_DATE;
END IF;
-- Insert data only if it is valid
INSERT INTO Table VALUES(dt);
EXCEPTION
WHEN INVALID_DATE
THEN DBMS_OUTPUT.PUT_LINE('Date is not valid');
...
2)
...
-- Do NOT check if date is valid and let an
-- CHECK constraint exception(CH_TABLE1) be raised if it is invalid
INSERT INTO Table VALUES(dt);
EXCEPTION
WHEN CHECK_CONSTRAINT_VIOLATED THEN
IF SQLERRM LIKE 'ORA-02290:%CH_TABLE1%' THEN
DBMS_OUTPUT.PUT_LINE('Date is not valid');
...
END IF;
...