2016-06-02 3 views
0

이 트리거를 postgre 데이터베이스로 가져 오려고하는데 오류가 발생했습니다. PostreSQL에서 트리거 생성시 오류가 발생했습니다.

내 코드

Select "comandes.before_insert_detall" AS "05"; 
DROP TRIGGER IF EXISTS before_insert_detall; 
DELIMITER -- 
CREATE TRIGGER before_insert_detall BEFORE INSERT ON detall 
FOR EACH ROW 
BEGIN 
Declare stock INT; 
SET stock = (select existencias from productos where id_fab=NEW.fab AND id_producto = NEW.producto); 
IF NEW.cantidad > stock THEN 
SET NEW.cantidad = stock; 
END IF; 
SET NEW.preu = (select precio from productos where id_fab=NEW.fab AND id_producto = NEW.producto); 
END; 
-- 
DELIMITER ; 

이미 필드 이름의과가 확인됩니다 확인했습니다입니다. 누구든지 나를 도울 수 있습니까?

감사

+0

당신이있어 어떤 오류가 ? 오류가 발생하지 않을 때까지 지침을 제거한 다음 죄책감이있는 사람을 찾을 때까지 다시 추가하십시오. \t [** How-to-Ask **] (http://stackoverflow.com/help/how -to-ask) \t \t 그리고 [** 시작 **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question- on-a-public-forum /)을 사용하여 질문 품질을 향상시키고 더 나은 답변을 얻는 방법을 배웁니다. –

+0

너무 오류를 게시 –

답변

0

내가 답을 발견 SELECT INTO

SELECT INTO stock 
     existencias 
FROM productos 
WHERE .... 
+0

Hhmp, 나는 그것을 tryied지만, 오류가 지속 .... 어떤 다른 생각? 감사! –

+0

무슨 오류가 있습니까? –

+0

안녕하세요! 나는 대답을 찾았다. 이 코드는 정상입니다! –

0

으로 시도 올바른 코드가있다!

CREATE OR REPLACE FUNCTION F_before_insert_detall() RETURNS TRIGGER AS $F_before_insert_detall$ 
Declare stock INT; 
BEGIN 
stock = (select existencias from productos where id_fab=NEW.fab AND id_producto = NEW.producto); 
IF NEW.cantidad > stock THEN 
NEW.cantidad := stock; 
END IF; 
NEW.preu := (select precio from productos where id_fab=NEW.fab AND id_producto = NEW.producto); 
RETURN NEW; 
END; 
$F_before_insert_detall$ LANGUAGE plpgsql; 

CREATE TRIGGER before_insert_detall BEFORE INSERT ON detall FOR EACH ROW 
EXECUTE PROCEDURE F_before_insert_detall(); 

어쨌든 정말 고마워요 :)

관련 문제