Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sử dụng trình kích hoạt để triển khai ràng buộc kiểm tra khóa ngoại

Có lẽ ngày đua phải nằm giữa ngày bắt đầu và ngày kết thúc cuộc họp, vì vậy bạn có thể kiểm tra cả hai cùng một lúc; và có lẽ bạn cũng muốn kiểm tra điều này để tìm các bản ghi mới, không chỉ các bản cập nhật. Vì vậy, bạn có thể sử dụng một cái gì đó như:

CREATE OR REPLACE TRIGGER RaceDateCheck
BEFORE INSERT OR UPDATE ON Race
FOR EACH ROW
DECLARE
  meetingStart Meeting.MeetingStartDate%TYPE;
  meetingEnd Meeting.MeetingEndDate%TYPE;
BEGIN
  SELECT StartDate, EndDate
  INTO meetingStart, meetingEnd
  FROM Meeting
  WHERE MeetingID = :NEW.MeetingID;

  IF :NEW.RaceDate < meetingStart
    OR :NEW.RaceDate > meetingEnd THEN
      RAISE_APPLICATION_ERROR(-20001, 'Invalid race date');
  END IF;
END;

Chỉ cho ngày kết thúc:

CREATE OR REPLACE TRIGGER RaceDateCheck
BEFORE INSERT OR UPDATE ON Race
FOR EACH ROW
DECLARE
  meetingEnd Meeting.MeetingEndDate%TYPE;
BEGIN
  SELECT EndDate
  INTO meetingEnd
  FROM Meeting
  WHERE MeetingID = :NEW.MeetingID;

  IF :NEW.RaceDate > meetingEnd THEN
    RAISE_APPLICATION_ERROR(-20001, 'Invalid race date');
  END IF;
END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle STANDARD_HASH không khả dụng trong PLSQL?

  2. LISTAGG thay thế trong Oracle 10g

  3. Xây dựng một truy vấn động trong C # (SQL Injection Attack)

  4. Oracle SQL Merge Nhiều hàng có cùng ID nhưng không có số nhận dạng thứ tự

  5. Số so sánh Oracle