PostgreSQL:创建表如果不存在AS
发布时间:2020-12-13 16:28:16 所属栏目:百科 来源:网络整理
导读:我使用PostgreSQL和SQL初学者.我正在尝试从查询创建一个表,如果我运行: CREATE TABLE table_name AS (....query...) 它的工作很好.但是如果我添加“如果不存在”并运行: CREATE TABLE IF NOT EXISTS table_name AS (....query...) 使用完全相同的查询,我得
我使用PostgreSQL和SQL初学者.我正在尝试从查询创建一个表,如果我运行:
CREATE TABLE table_name AS (....query...) 它的工作很好.但是如果我添加“如果不存在”并运行: CREATE TABLE IF NOT EXISTS table_name AS (....query...) 使用完全相同的查询,我得到:
有没有办法做到这一点?
CREATE TABLE AS被视为与正常
CREATE TABLE的单独声明,直到Postgres 9.5版(见
changelog entry)不支持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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |