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

Tạo trình kích hoạt đưa ra một ngoại lệ trên chèn

Bạn có muốn đưa ra một ngoại lệ (điều này sẽ ngăn việc chèn thành công) không? Hay bạn muốn cho phép chèn thành công và ghi một chuỗi vào dbms_output đệm có thể tồn tại hoặc không và có thể hiển thị hoặc không hiển thị cho người đang chạy bộ chèn?

Trong cả hai trường hợp, bạn sẽ muốn đây là trình kích hoạt cấp hàng, không phải trình kích hoạt cấp câu lệnh, vì vậy bạn sẽ cần thêm for each row mệnh đề.

CREATE OR REPLACE TRIGGER person_id_trigg
  AFTER INSERT
  ON person
  FOR EACH ROW

Nếu bạn muốn đưa ra một ngoại lệ

BEGIN
  IF( length( :new.id ) <> 11 )
  THEN
    RAISE_APPLICATION_ERROR( -20001, 
                             'The new ID value must have a length of 11' );
  END IF;
END;

Nếu bạn muốn có khả năng in đầu ra nhưng cho phép insert để thành công

BEGIN
  IF( length( :new.id ) <> 11 )
  THEN
    dbms_output.put_line( 'The new ID value must have a length of 11' );
  END IF;
END;

Tất nhiên, trong thực tế, bạn sẽ không bao giờ sử dụng một trình kích hoạt cho những việc như thế này. Trong thế giới thực, bạn sẽ sử dụng một ràng buộc.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phải làm gì nếu bạn gặp lỗi không thể mở tệp đối tượng được chia sẻ khi sử dụng trình điều khiển Easysoft Oracle ODBC phiên bản OCI?

  2. Cách chạy SQL trong tập lệnh shell

  3. Truy vấn SQL để lấy giá trị chính xác của một cột

  4. Oracle PL / SQL Release 12.2.0.1.0 so với 12.1.0.2.0 - thực thi ngay lập tức với các tham số

  5. ORACLE Chèn hiệu suất trên các bảng được lập chỉ mục