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.