无法删除Postgres触发功能
代码:
DROP function IF EXISTS update_rarity;
CREATE OR REPLACE FUNCTION update_rarity() RETURNS trigger AS $$
BEGIN
if (((select count(raresa) FROM Carta WHERE c.raresa LIKE '%Legendary%')*100 /(select count(raresa) FROM Carta)) <> 17 ) then
INSERT INTO Warnings(affected_table,error_message,date,user)
VALUES ('Carta' ,'Proporcions de raresa no respectades: Legendary la proporció actual és '|| (select count(raresa) FROM Carta WHERE raresa LIKE '%Legendary%') || 'quan hauria de ser 3', CURRENT_DATE, CURRENT_USER);
end if;
return null;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS cards ON Carta;
CREATE OR REPLACE TRIGGER cards
AFTER INSERT OR UPDATE ON Carta
FOR EACH ROW
EXECUTE FUNCTION update_rarity();
UPDATE carta SET nom ='Ral Roachs Rascals' ,raresa='Proletari' WHERE nom = 'Rascals';
ERROR: syntax error in or near of «;»
LINE 1: DROP function IF EXISTS update_rarity;
^
SQL state: 42601
Character: 38
Code:
DROP function IF EXISTS update_rarity;
CREATE OR REPLACE FUNCTION update_rarity() RETURNS trigger AS $
BEGIN
if (((select count(raresa) FROM Carta WHERE c.raresa LIKE '%Legendary%')*100 /(select count(raresa) FROM Carta)) <> 17 ) then
INSERT INTO Warnings(affected_table,error_message,date,user)
VALUES ('Carta' ,'Proporcions de raresa no respectades: Legendary la proporció actual és '|| (select count(raresa) FROM Carta WHERE raresa LIKE '%Legendary%') || 'quan hauria de ser 3', CURRENT_DATE, CURRENT_USER);
end if;
return null;
END;
$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS cards ON Carta;
CREATE OR REPLACE TRIGGER cards
AFTER INSERT OR UPDATE ON Carta
FOR EACH ROW
EXECUTE FUNCTION update_rarity();
UPDATE carta SET nom ='Ral Roachs Rascals' ,raresa='Proletari' WHERE nom = 'Rascals';
ERROR: syntax error in or near of «;»
LINE 1: DROP function IF EXISTS update_rarity;
^
SQL state: 42601
Character: 38
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Postgres 10中介绍了省略Drop功能的功能签名的可能性。在您过时且不受支持的Postgres版本中,您需要包括参数列表(触发功能是空的):
The possibility to omit the function signature for a DROP FUNCTION was introduced in Postgres 10. In your outdated and unsupported Postgres version, you need to include the parameter list (which is empty for a trigger function):