CREATE TABLE IF NOT EXISTS myschema.mytable (i integer);
@H_502_5@
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$;
@H_502_5@称呼:
SELECT create_mytable(); -- call as many times as you want.
@H_502_5@笔记:
- 列
schemaname
和tablename
inpg_tables
区分大小写。如果在CREATE TABLE
语句中双引号标识符,则需要使用完全相同的拼写。如果不这样做,则需要使用小写字符串。 -
pg_tables
只包含实际表。该标识符可能仍被相关对象占用。、 - 如果角色执行此功能不具备必要的权限,以创建表,你可能想使用
SECURITY DEFINER
的功能,使其拥有与必要的权限另一个角色。这个版本足够安全。
解决方法
在 MySQL 脚本中,您可以编写:
CREATE TABLE IF NOT EXISTS foo ...;
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
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$;
@H_502_5@称呼:
SELECT create_mytable(); -- call as many times as you want.
@H_502_5@笔记:
- 列
schemaname
和tablename
inpg_tables
区分大小写。如果在CREATE TABLE
语句中双引号标识符,则需要使用完全相同的拼写。如果不这样做,则需要使用小写字符串。 -
pg_tables
只包含实际表。该标识符可能仍被相关对象占用。、 - 如果角色执行此功能不具备必要的权限,以创建表,你可能想使用
SECURITY DEFINER
的功能,使其拥有与必要的权限另一个角色。这个版本足够安全。
解决方法
在 MySQL 脚本中,您可以编写:
CREATE TABLE IF NOT EXISTS foo ...;
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
SELECT create_mytable(); -- call as many times as you want.
@H_502_5@笔记:
- 列
schemaname
和tablename
inpg_tables
区分大小写。如果在CREATE TABLE
语句中双引号标识符,则需要使用完全相同的拼写。如果不这样做,则需要使用小写字符串。 -
pg_tables
只包含实际表。该标识符可能仍被相关对象占用。、 - 如果角色执行此功能不具备必要的权限,以创建表,你可能想使用
SECURITY DEFINER
的功能,使其拥有与必要的权限另一个角色。这个版本足够安全。
解决方法
在 MySQL 脚本中,您可以编写:
CREATE TABLE IF NOT EXISTS foo ...;
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
CREATE TABLE IF NOT EXISTS foo ...;
称呼:
笔记:
在 MySQL 脚本中,您可以编写:
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
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$;
@H_502_5@称呼:
SELECT create_mytable(); -- call as many times as you want.
@H_502_5@笔记:
- 列
schemaname
和tablename
inpg_tables
区分大小写。如果在CREATE TABLE
语句中双引号标识符,则需要使用完全相同的拼写。如果不这样做,则需要使用小写字符串。 -
pg_tables
只包含实际表。该标识符可能仍被相关对象占用。、 - 如果角色执行此功能不具备必要的权限,以创建表,你可能想使用
SECURITY DEFINER
的功能,使其拥有与必要的权限另一个角色。这个版本足够安全。
解决方法
在 MySQL 脚本中,您可以编写:
CREATE TABLE IF NOT EXISTS foo ...;
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
SELECT create_mytable(); -- call as many times as you want.
@H_502_5@笔记:
- 列
schemaname
和tablename
inpg_tables
区分大小写。如果在CREATE TABLE
语句中双引号标识符,则需要使用完全相同的拼写。如果不这样做,则需要使用小写字符串。 -
pg_tables
只包含实际表。该标识符可能仍被相关对象占用。、 - 如果角色执行此功能不具备必要的权限,以创建表,你可能想使用
SECURITY DEFINER
的功能,使其拥有与必要的权限另一个角色。这个版本足够安全。
解决方法
在 MySQL 脚本中,您可以编写:
CREATE TABLE IF NOT EXISTS foo ...;
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
CREATE TABLE IF NOT EXISTS foo ...;
称呼:
笔记:
在 MySQL 脚本中,您可以编写:
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
称呼:
SELECT create_mytable(); -- call as many times as you want.
@H_502_5@笔记:
- 列
schemaname
和tablename
inpg_tables
区分大小写。如果在CREATE TABLE
语句中双引号标识符,则需要使用完全相同的拼写。如果不这样做,则需要使用小写字符串。 -
pg_tables
只包含实际表。该标识符可能仍被相关对象占用。、 - 如果角色执行此功能不具备必要的权限,以创建表,你可能想使用
SECURITY DEFINER
的功能,使其拥有与必要的权限另一个角色。这个版本足够安全。
解决方法
在 MySQL 脚本中,您可以编写:
CREATE TABLE IF NOT EXISTS foo ...;
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
CREATE TABLE IF NOT EXISTS foo ...;
笔记:
在 MySQL 脚本中,您可以编写:
… 其他的东西 …
然后您可以多次运行脚本而无需重新创建表。
你如何在 PostgreSQL 中做到这一点?
笔记: