SQL新手,使用PostgreSQL。
我正在尝试一些初学者问题,但我遇到了问题。 为了确保我在测试时不会遇到任何未知错误,我会按步骤编写查询,即
CREATE TABLE x(...);
...
run query..
CREATE TABLE x(...);
CREATE TABLE y(...);
run query
---等等。
问题是,在我创建表之后,如果我想再次尝试运行查询,我必须删除它,否则我得到
'错误:关系“x”已经存在。'
看起来像是一个微不足道的问题,但在浏览了stackoverflow,谷歌,postgre的网站后,我还没有找到任何东西。
答案 0 :(得分:1)
如果表格存在,您可以删除该表格,如果该表格不存在,您可以根据需要创建该表格。
DROP TABLE IF EXISTS tableName ...
CREATE TABLE IF NOT EXISTS tableName ...
答案 1 :(得分:1)
您不应该使用临时表 - 除非您有特定的表现(或其他)原因。
而是使用公用表表达式(CTE):
with x as (
<code here>
),
y as (
<code here>
),
. . .
select . . .
CTE是查询的一部分,因此它们不会在查询运行之间保留。瞧!命名或临时表没问题。
答案 2 :(得分:0)
如果您真的只是练习并且数据不重要,您可以使用TEMPORARY
表。然后一个简单的断开连接和重新连接将它们扔掉,给你一个干净的石板。
CREATE TEMPORARY TABLE x(...);
或者您甚至可以使用事务范围的临时表,这些表在提交或回滚时被删除:
BEGIN;
CREATE TEMPORARY TABLE x(...) ON COMMIT DROP;
INSERT ...
COMMIT;
或者,当然,您可以在最后ROLLBACK
的交易中进行迭代开发。
BEGIN;
CREATE TABLE x(...);
INSERT ...
ROLLBACK;