Apakah Anda ingin memunculkan pengecualian (yang akan mencegah penyisipan berhasil)? Atau apakah Anda ingin mengizinkan penyisipan berhasil dan menulis string ke dbms_output
buffer yang mungkin atau mungkin tidak ada dan mungkin atau mungkin tidak ditampilkan kepada manusia yang menjalankan penyisipan?
Dalam kedua kasus, Anda ingin ini menjadi pemicu tingkat baris, bukan pemicu tingkat pernyataan, jadi Anda harus menambahkan for each row
klausa.
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Jika Anda ingin mengajukan pengecualian
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Jika Anda ingin mencetak keluaran tetapi izinkan insert
untuk berhasil
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
Tentu saja, pada kenyataannya, Anda tidak akan pernah menggunakan pemicu untuk hal semacam ini. Di dunia nyata, Anda akan menggunakan kendala.