在 MySQL 脚本中,您可以编写:
CREATE TABLE IF NOT EXISTS foo ...;
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
此功能已在Postgres 9.1 中实现:
CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);
对于旧版本,这里有一个功能可以解决它:
CREATE OR REPLACE FUNCTION create_mytable() RETURNS void LANGUAGE plpgsql AS $func$ BEGIN IF EXISTS (SELECT FROM pg_catalog.pg_tables WHERE schemaname = 'myschema' AND tablename = 'mytable') THEN RAISE NOTICE 'Table myschema.mytable already exists.'; ELSE CREATE TABLE myschema.mytable (i integer); END IF; END $func$;
称呼:
SELECT create_mytable(); -- call as many times as you want.
笔记:
schemaname
tablename
pg_tables
CREATE TABLE
SECURITY DEFINER