为什么我的桌子不是在Postgres中创建的?

时间:2015-11-20 12:43:30

标签: sql postgresql postgresql-9.3 create-table

我的最终目标是完成一个需要使用临时表的Postgresql函数。由于语法错误,尝试创建临时表本身不起作用。我很确定我的语法正确,所以有人能告诉我这里我做错了什么吗?

在PGAdmin III中,我打开一个查询窗口并输入以下内容:

create temporary table tmp_parts
(
  id serial not null,
  part_number character varying(255) not null,
  max_price numeric(19,2) not null
);

当我运行Explain Query功能来测试语法时,我收到以下错误:

ERROR:  syntax error at or near "serial"
LINE 3:   id serial not null,
             ^
********** Error **********

ERROR: syntax error at or near "serial"
SQL state: 42601
Character: 98

我做错了什么?

2 个答案:

答案 0 :(得分:4)

您无法在create table中使用explain。只允许following

  

任何SELECT,INSERT,UPDATE,DELETE,VALUES,EXECUTE,DECLARE或   CREATE TABLE AS语句,您希望看到其执行计划。

答案 1 :(得分:0)

serial实际上并不是postgres中的一种类型,它是

的简写

id integer NOT NULL DEFAULT nextval('tmp_parts_seq')

我的'猜测'是它不喜欢NOT NULL的重复或者(更可能的是)你不能拥有一系列临时数字,因为它们是临时的。

比我们想象的要简单:

This previous question显示语法,您需要删除括号并用分号结束语句。