謝謝大家的回覆
第一次寫trigger 感覺問題不少
以下是我的code 還請大家幫忙指出錯誤 謝謝
CREATE TABLE Exam (exam_ID CHAR(2), exam_DATE DATE)
CREATE TABLE Exam2 (exam_ID CHAR(2), exam_DATE2 DATE)
CREATE trigger exam2_trigger
BEFORE INSERT ON Exam2
FOR EACH ROW
DECLARE DATE Y;
BEGIN
SELECT exam_DATE INTO Y
FROM Exam
WHERE exam_ID = new.exam_ID;
IF new.exam_DATE2 < Y
THEN RAISE_APPLICATION_ERROR(-20000, 'Invalid Date');
END IF;
END
ERROR at line 7: PL/SQL: Statement ignored5. BEGIN
6. SELECT exam_DATE INTO Y
7. FROM Exam
8. WHERE exam_ID = new.exam_ID;
※ 引述《fsz570 (570)》之銘言:
: ※ 引述《crazykai (Gooday)》之銘言:
: : 我有兩個TALBE
: : 分別是 EMPLOYEE(Emp_ID, Hire_Date)和 Assignment(Proj_ID ,Emp_ID, Date_Assigned)
: : Rule是Date_assigned必須大於Hire_date
: : 請問有什麼方式可以做到這樣的限制呢? 謝謝
: 這種狀況最好還是用程式控制,Constraint 沒辦法 Cross Table 設定
: 如果真的要用 DB 的方式解決,那就寫 Trigger 吧
: 但是 Trigger 不能 rollback,也許你可以試試在 Trigger 裡 raise Exception
: 或是在 Trigger 裡檢查到 Date_Assigned 大於 Hire_date 時,將 Date_Assigned
: 的值設定為某特定值 ( 比如說 Hire_Date )
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 96.236.161.193