2016-06-02 10 views
0

Ich versuche, diesen Trigger in eine Postgre-Datenbank importieren, aber ich habe einen Fehler.Fehler beim Erstellen Trigger auf PostreSQL

Dies ist mein Code

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 ; 

Ich habe bereits überprüft, die und die Felder Name ok sind. Kann mir jemand helfen?

Dank

+0

welchen Fehler Sie bekam ? Entfernen Sie die Anweisungen, bis Sie den Fehler nicht mehr haben, und fügen Sie ihn zurück, bis Sie herausgefunden haben, wer schuldig ist. \t Bitte lesen Sie [** How-to-Ask **] (http://stackoverflow.com/help/how (zu fragen) \t \t Und hier ist ein großartiger Ort, um [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question- on-a-public-forum /) lernen, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. –

+0

poste den Fehler auch –

Antwort

0

Versuchen mit SELECT INTO

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

Hhmp, ich habe es versucht, aber der Fehler besteht weiter .... andere Idee? Vielen Dank! –

+0

Welchen Fehler haben Sie? –

+0

hey! Ich habe die Antwort gefunden. Dieser Code ist OK! –

0

fand ich die Antwort gibt der richtige Code ist:

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(); 

Vielen Dank sowieso :)