2015-02-20 6 views
1

У меня есть следующие функции:функция падения в Postgres

CREATE FUNCTION "updateStat"(_request_date timestamp without time zone, _calls integer, _latency integer) RETURNS void AS $$ 
BEGIN 
    LOCK TABLE "statistics" IN SHARE ROW EXCLUSIVE MODE; 
    WITH upsert AS (UPDATE "statistics" set calls = calls + _calls, total_latency = total_latency + _latency WHERE request_date=_request_date RETURNING request_date) 
    INSERT INTO "statistics" ("request_date", "calls", "total_latency") SELECT _request_date, _calls, _latency WHERE NOT EXISTS (SELECT "request_date" FROM upsert); 
END; 
$$ LANGUAGE plpgsql; 

Как я могу упасть такую ​​функцию?

Я попытался следующие:

# DROP FUNCTION updateStat(void); 
ERROR: function updatestat(void) does not exist 
# DROP FUNCTION updateStat(); 
ERROR: function updatestat() does not exist 
+0

Что вы передаете 'void' как список типов аргументов? –

+0

Becouse Я хочу, чтобы он возвращал тип – lante

ответ

3
DROP FUNCTION "updateStat"(timestamp without time zone, integer, integer); 

Вы могли бы рассмотреть возможность использования CREATE OR REPLACE FUNCTION... в вашем создания сценария, так что вы можете переопределить его без необходимости бросить его каждый раз.

+0

за ваш ответ, но он не работает для меня :(, это возвращает 'ERROR: функция updatestat (timestamp без часового пояса, integer, integer) не существует', но когда Я делаю '\ df' в CLI, это показывает мне функцию, которую вы описываете: [см. Это изображение] (http://i.imgur.com/XTV3S1S.png) – lante

+1

@lante даже с кавычками? те из первого редактирования, извините. Они необходимы, чтобы получить название смешанного случая. – cms

+0

Ох, цитаты сделали волшебство, это работает! спасибо! – lante

Смежные вопросы