Триггер с postgresql - PullRequest
       17

Триггер с postgresql

0 голосов
/ 08 ноября 2010

Прежде всего, вот мой код:

CREATE FUNCTION unknown_Model ()
RETURNS TRIGGER
LANGUAGE plpgsql
AS $$
--checks if the product table has information pertaining to the new PC insertion
BEGIN

    IF (SELECT COUNT(Product.model) 
          FROM Product 
          WHERE Product.model = NEW.model) = 0 THEN 
       INSERT INTO Product VALUES ('X', NEW.model, 'PC');
    END IF;

    RETURN NEW;
END
$$;

CREATE TRIGGER unknownModel
BEFORE INSERT OR UPDATE ON PC
FOR EACH ROW EXECUTE PROCEDURE unknown_Model();

Я получаю сообщение об ошибке "контроль достиг конца процедуры запуска без ВОЗВРАТА" Я смотрел на другие примеры в интернете, и они очень похожи на мои. Любая идея, почему он не видит мое заявление о возвращении?

Спасибо

1 Ответ

1 голос
/ 08 ноября 2010

Попробуйте

CREATE FUNCTION unknown_Model () 
RETURNS TRIGGER 
AS $$ 
--checks if the product table has information pertaining to the new PC insertion 
BEGIN 

    IF (SELECT COUNT(Product.model)  
          FROM Product  
          WHERE Product.model = NEW.model) = 0 THEN  
       INSERT INTO Product VALUES ('X', NEW.model, 'PC'); 
    END IF; 

    RETURN NEW; 
END 
$$ LANGUAGE plpgsql ;

т.е. переместите декларацию языка после тела процедуры. AFAIK это не должно иметь значение, но ... хорошо, попробуйте и посмотрите, поможет ли это.

Делись и наслаждайся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...