我的最终目标是完成一个需要使用临时表的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
我做错了什么?
答案 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显示语法,您需要删除括号并用分号结束语句。