PostgreSQL:如果不存在,则创建表

用户名

我正在使用PostgreSQL,并且是SQL的初学者。我正在尝试从查询创建表,如果运行:

CREATE TABLE table_name AS
   (....query...)

它工作正常。但是然后如果我添加“如果不存在”并运行:

CREATE TABLE IF NOT EXISTS table_name AS
   (....query...)

使用完全相同的查询,我得到:

ERROR: syntax error at or near "as"

有什么办法吗?

即时通讯

CREATE TABLE AS被认为是与普通CREATE TABLE分开的语句直到Postgres 9.5版(请参阅changelog条目)不支持IF NOT EXISTS子句为止(请务必查看所使用版本的正确手册。)

尽管CREATE TABLE ... LIKE语法不够灵活,但在某些情况下语法可能是替代方法。它不是从SELECT语句中获取其结构(和内容),而是复制另一个表或视图的结构。

因此,您可以编写如下内容(未经测试);如果表已被填充,则最后的插入是一种不执行任何操作的杂乱方式:

CREATE OR REPLACE VIEW source_data AS SELECT * FROM foo NATURAL JOIN bar;

CREATE TABLE IF NOT EXISTS snapshot LIKE source_data;

INSERT INTO snapshot
SELECT * FROM source_data
WHERE NOT EXISTS ( SELECT * FROM snapshot );

或者,如果您想丢弃先前的数据(例如,废弃的临时表),则可以有条件地删除旧表,而无条件地创建新表:

DROP TABLE IF EXISTS temp_stuff;

CREATE TEMPORARY TABLE temp_stuff AS SELECT * FROM foo NATURAL JOIN bar;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如果Ruby不存在,则创建目录

来自分类Dev

如果记录不存在则创建

来自分类Dev

PostgreSQL插入如果不存在

来自分类Dev

如果不存在则创建表,如果缺少则插入列,最好的方法

来自分类Dev

android sqlite如果不存在则创建表

来自分类Dev

创建mysql表(如果不存在)

来自分类Dev

PostgreSQL 9.3:如果不存在

来自分类Dev

模式生成器:如果不存在,则创建表

来自分类Dev

创建HDF5组/表(如果不存在)

来自分类Dev

创建聚合(如果不存在)

来自分类Dev

Netezza创建表(如果不存在)

来自分类Dev

附加或创建StringSet(如果不存在)

来自分类Dev

PostgreSQL中的“ IF EXISTS”-创建查询以更新记录(如果存在)并插入(如果不存在)

来自分类Dev

如果目录不存在,如何创建?

来自分类Dev

雄辩的:如果不存在则创建关系

来自分类Dev

如果不存在则创建表vs像显示表

来自分类Dev

如果存在,则覆盖;如果不存在,则创建

来自分类Dev

如何检查表是否存在,如果不存在则创建表?

来自分类Dev

HSQL:创建索引(如果不存在)

来自分类Dev

如果表不存在,则插入MySQL

来自分类Dev

创建子对象(如果不存在)

来自分类Dev

如果opencart中不存在,则创建表

来自分类Dev

关系“表名”不存在(PostgreSQL)

来自分类Dev

mysqldump-如果不存在则创建表

来自分类Dev

如果值不存在则更新表

来自分类Dev

Akka:如果不存在则创建演员

来自分类Dev

PostgreSQL创建引用不存在表的函数

来自分类Dev

Python ODBC 创建表如果不存在

来自分类Dev

PowerShell 如果不存在则创建哈希表并添加值