Bonjour,
Voici mon code
J'émule donc la contrainte CHECK avec un trigger: ici, on a un simple CHECK sans fonction (MYVALUE <> 0 or MYVALUE <>1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 SET SERVEROUTPUT ON / create table RANDRIANO.DRIA_TEST ( "ID" varchar2(38), "CONTENT" varchar2(38) NOT NULL, "MYVALUE" INT, "SYSTEM" NUMBER (38) DEFAULT 0, CONSTRAINT "PK_DRIA_TEST" PRIMARY KEY(ID) USING INDEX TABLESPACE RANDRIANOINDEX ) TABLESPACE RANDRIANODATA LOGGING / CREATE OR REPLACE TRIGGER RANDRIANO.B_I_DRIA_TEST before INSERT ON RANDRIANO.DRIA_TEST FOR EACH ROW DECLARE v_value int; BEGIN v_value := :new.MYVALUE; dbms_output.put_line('ligneAvant.MYVALUE = ' || v_value); if (v_value <> 0 or v_value <>1) then raise_application_error(-20000,'Check_DRIA_TEST'); end if ; END ;
Je teste la requête:
Ici, j'ai MYVALUE = 1 respectant la contrainte, le dbms_output.put_line l'affiche même mais j'ai toujours
Code : Sélectionner tout - Visualiser dans une fenêtre à part insert into RANDRIANO.DRIA_TEST values('KUAKO','lalala',0,5)
ERROR at line 1:
ORA-20000: Check_DRIA_TEST
ORA-06512: at "RANDRIANO.B_I_DRIA_TEST", line 11
ORA-04088: error during execution of trigger 'RANDRIANO.B_I_DRIA_TEST'
Partager