Vous ne savez pas pourquoi la réponse acceptée a été acceptée car ni elle ni les commentaires joints ne semblent résoudre le problème évident dans le code affiché.
Dans un corps de déclencheur, nous référencions des valeurs dans la ligne insérée avec le mot de code :NEW
. Le code posté n'a pas le signe deux-points lorsqu'il référence la colonne dans la clause WHERE. C'est ce qui est nécessaire:
CREATE OR REPLACE TRIGGER "propuesta_casas"
BEFORE INSERT ON "PROPUESTA_TIENDA_BARRIO"
FOR EACH ROW
WHEN (new."CASASCAL" IS NULL)
BEGIN
SELECT PROPUESTA.CASAS
INTO :new."CASASCAL"
FROM PROPUESTA
WHERE PROPUESTA.IDPROPUESTA=:new.IDPROPUESTA ;
END;
/
Soit dit en passant, attention à l'aide de minuscules guillemets doubles lors de la création d'objets.
Par défaut, tous les noms Oracle sont stockés dans le dictionnaire de données en majuscules, mais les instructions SQL ne sont pas sensibles à la casse. Ainsi, les deux suivants statments se réfèrent au même objet:
select * from emp
/
select * from EMP
/
Cependant, si nous créons notre objet avec un nom en majuscules ou minuscules minuscules et le mettre entre guillemets il est stocké dans le dictionnaire de données avec que cas exact. Cela signifie que nous devons utiliser ce cas précis chaque fois que nous référençons l'objet, entre guillemets. Donc, si nous avons créé une table avec tous les minuscules ...
create table "emp" ...
... alors cette déclaration échouera:
select * from emp
/
Il doit être
select * from "emp"
/
Bien sûr, si nous avons déjà une table appelée EMP alors la première déclaration aurait réussi, si seulement aurait choisi d'une table différente.
Dans le cas des déclencheurs, nous ne les désignons généralement pas par leur nom. Mais nous devons utiliser le cas chaque fois que nous recherchons le déclencheur dans le dictionnaire de données:
select status
from user_triggers
where trigger_name = 'propuesta_casas'
/
Quel est le problème? Il message d'erreur que vous obtenez ... –
@Leniel, quand je cours le sql est bien, mais quand j'insère une ligne dans la table, je reçois une erreur sur: le déclencheur 'MJVS.propuesta_casas' n'est pas valide .. – diegueus9
quand j'ai compilé je reçois: a été trouvé EOF quand weit commencer fin de cas déclarer exit fin pour goto si boucle mod null pragma raise retour sélectionner mise à jour – diegueus9