Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menggunakan pemicu untuk menerapkan batasan pemeriksaan kunci asing

Agaknya tanggal perlombaan harus antara tanggal mulai dan tanggal akhir rapat, sehingga Anda dapat memeriksa keduanya sekaligus; dan juga mungkin Anda ingin memeriksa ini untuk catatan baru, bukan hanya pembaruan. Jadi Anda bisa menggunakan sesuatu seperti:

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;

Hanya untuk tanggal akhir:

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. MyBatis RowBounds tidak membatasi hasil kueri

  2. Mendeteksi Apakah Nilai Berisi Setidaknya Satu Digit Numerik di Oracle

  3. Menggunakan Substr dengan Instr untuk Mengekstrak String di Oracle

  4. Mengapa Oracle menggunakan DBMS_STATS.GATHER_TABLE_STATS?

  5. Bagaimana cara mengembalikan RefCursor dari fungsi Oracle?