看板 Database 關於我們 聯絡資訊
謝謝大家的回覆 第一次寫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