PL/SQL: ORA-00984: Un nom de colonne n'est pas autorisé ici
BONJOUR A TOUS
voila mon pb
j'ai deux tables
la premiere permet d'inserer des données type commandes ( table de test )
Code:
1 2 3 4 5 6
| CREATE TABLE "CMD"
( "NUM_CMD" VARCHAR2(4) NOT NULL ENABLE,
"ID_CMD" VARCHAR2(50) NOT NULL ENABLE,
"DATE_CMD" DATE NOT NULL ENABLE
)
/ |
la deuxieme est une table de session
Code:
1 2 3 4 5 6
| CREATE TABLE "SESSION_ENTREE"
( "TYPE_ENTREE" VARCHAR2(50) NOT NULL ENABLE,
"TIMESTAMP" VARCHAR2(50) NOT NULL ENABLE,
"DATE_ENTREE" DATE NOT NULL ENABLE
)
/ |
j'ai crée un trigger sur ma table CMD qui insere a chaque ligne, une ligne sur ma table SESSION_ENTREE
Code:
1 2 3 4 5 6 7 8 9 10 11
| CREATE OR REPLACE TRIGGER "CMD_T1"
AFTER
insert or update or delete on "CMD"
begin
INSERT INTO SESSION_ENTREE
(TYPE_ENTREE,TIMESTAMP,DATE_ENTREE)
VALUES
('CMD',CURRENT_TIMESTAMP,NEW.DATE_CMD);
end;
/ |
le probleme est que je voudrai récupérer le champs DATE_CMD de la derniere ligne inseré et via ma requete l'insérer dans mon champs DATE_ENTREE
oracle m'envoie le message d'erreur suivant :
Citation:
PL/SQL: ORA-00984: Un nom de colonne n'est pas autorisé ici
please help me
merci de cette reponse ultra rapide
CURRENT_TIMESTAMP me permet de dater precisément mon insertion de ligne, tandis que NEW.DATE_CMD est la date inséré dans ma table CMD ce n'est pas la date courante que je souhaite entrer, mais bien la date de la derniere ligne inséré dans ma table CMD. j'ai bien essayé de rajouter les : mais maleureusement exactement le même message d'erreur.
alors j'ai pensé declarer une variable type date avec un code dans ce style :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| CREATE OR REPLACE TRIGGER "CMD_T1"
AFTER
insert or update or delete on "CMD"
DECLARE
date_cmd_new DATE;
date_cmd_new:= NEW.DATE_CMD;
begin
INSERT INTO SESSION_ENTREE
(TYPE_ENTREE,TIMESTAMP,DATE_ENTREE)
VALUES
('CMD',CURRENT_TIMESTAMP,date_cmd_new);
end; |
mais pas mieux tjs sans resultat.
est ce que NEW.DATE_CMD correspond bien à ce que je veux? (c-a-d a la date de ma derniere insertion dans la table CMD) ou alors j'y suis pas du tout :?