创建表后调用psql函数

时间:2017-06-23 16:11:53

标签: postgresql

我有.sql文件,我在其中创建一个表并插入行。

CREATE TABLE vehicle (  
    name              TEXT    PRIMARY KEY,    
    id INTEGER DEFAULT 0  
)  
INSERT INTO vehicle values('car',1);  
INSERT INTO vehicle values('bus',2);  

我没有执行插入命令,而是想要一个能够插入两行以上的函数。我怎么称呼这个功能?

CREATE OR REPLACE FUNCTION insert()  
        RETURNS VOID AS $$  
BEGIN  
        INSERT INTO vehicle values('car',1);  
INSERT INTO vehicle values('bus',2);  
        RETURN;  
END; 
$$ LANGUAGE 'plpgsql';

1 个答案:

答案 0 :(得分:1)

为什么需要这样的功能? 可能,您只需要将所有内容包装到单个事务块中吗?

begin;
  CREATE TABLE vehicle (  
    name              TEXT    PRIMARY KEY,    
    id INTEGER DEFAULT 0  
  );
  INSERT INTO vehicle values('car',1);  
  INSERT INTO vehicle values('bus',2);
commit;

如果不是,请考虑使用“匿名”plpgsql块,无需明确定义函数 - 当您只需运行一次代码时,它非常有用:

do $$
begin
  INSERT INTO vehicle values('car',1);  
  INSERT INTO vehicle values('bus',2);
end;
$$ language plpgsql;

最后,如果你确实需要一个函数,好吧,你正确定义了它,所以让我们运行它。在Postgres中,存储过程是函数,这意味着它们可以很容易地集成到常规SQL语句中,所以让我们只使用SELECT(在Postgres中,SELECT语句被允许没有FROM子句):

select insert();