Trigger PRIMARY KEY ne fonctionne pas
Quelqu’un me dit pou quoi les Trigger des PRIMARY KEY ne fonctionnent pas même sur IBCONSOL
Voila ma table
Code:
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
|
CREATE DOMAIN "AUTO_INC" AS INTEGER;
CREATE DOMAIN "CAR_COURT" AS VARCHAR(30);
CREATE DOMAIN "HEURE" AS TIME;
CREATE DOMAIN "LA_DATE" AS DATE;
CREATE DOMAIN "MONNAIE" AS NUMERIC(15, 2)
default 0;
CREATE DOMAIN "NOTE" AS VARCHAR(300);
CREATE DOMAIN "NUMERO" AS INTEGER
default 0;
CREATE DOMAIN "UN_CAR" AS VARCHAR(1);
CREATE TABLE "PROFORMA"
(
"ID_PROFORMA" "AUTO_INC" NOT NULL,
"CODE_MODE_PAIEMENT" "UN_CAR",
"USERNAME" "CAR_COURT",
"CODE_OPERATEUR" VARCHAR(10),
"NUM_PROFORMA" "NUMERO",
"DATE_PROFORMA" "LA_DATE",
"HEURE_PROFORMA" "HEURE",
"OBS_PROFORMA" "NOTE",
"CLOS_PROFORMA" "UN_CAR",
"TYPE_PRIX_PROFORMA" "UN_CAR",
CONSTRAINT "PK_PROFORMA" PRIMARY KEY ("ID_PROFORMA")); |
Voila le Trigger qui fonctionne correctement
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| SET TERM ^ ;
CREATE TRIGGER "INSERTION_PROFORMA" FOR "PROFORMA"
ACTIVE BEFORE INSERT POSITION 0
as
declare variable num_proforma integer;
begin
if (new.ID_PROFORMA is null) then
new.ID_PROFORMA = GEN_ID(S_PROFORMA, 1);
if (new.date_proforma is null) then new.date_proforma = 'today';
if (new.heure_proforma is null) then new.heure_proforma = 'now';
select max(num_proforma) from proforma
where num_proforma between ((extract(year from new.date_proforma)) * 10000 + 1) and
((extract(year from new.date_proforma)) * 10000 + 9999)
into :num_proforma;
if (:num_proforma is null) then
new.num_proforma = ((extract(year from new.date_proforma)) * 10000 + 1);
else new.num_proforma = :num_proforma + 1;
end
^ |
enfin le trigger qui ne fonctionne pas
Code:
1 2 3 4 5 6 7 8 9
| CREATE TRIGGER "TI_PROFORMA" FOR "PROFORMA"
ACTIVE BEFORE INSERT POSITION 0
as
declare variable numrows integer;
begin
if (new.ID_PROFORMA is null) then
new.ID_PROFORMA = GEN_ID(S_PROFORMA, 1);
end
^ |
merci a tous :ccool: