我有一个名为SEQ_TABLE的表,它有两列,SEQ_NAME和ID
SEQ_NAME | ID
----------------------
SEQ_TABLE_10 | 1
SEQ_TABLE_20 | 5
其中ID是TABLE_10和TABLE_20
的COLUMN_1的最大值现在,我必须通过从 SEQ_TABLE 获取序列的 nextvalue ,将新记录插入TABLE_10。
我写了PostgreSQL查询如下:
INSERT INTO TABLE_10 (COLUMN_1, COLUMN_2, COLUMN_3) VALUES ((SELECT nextval(SEQ_TABLE)), 'Bangalore' ,NULL);
当我执行上面的Query时,它给出了以下错误: **********错误**********
ERROR: column "SEQ_TABLE_10" does not exist
SQL state: 42703
Character: 99
但是,以下查询在 MySQL 数据库中正常工作:
INSERT INTO TABLE_TABLE(COLUMN_1, COLUMN_2, COLUMN_3) VALUES ((SELECT nextval('TABLE_172_SEQ','true')), 'Bangalore' ,NULL);
在 PostgreSQL 数据库中实现它的Exact Postgres查询是什么?
答案 0 :(得分:0)
您想创建一个序列,而不是一个表(SEQ_TABLE) 请参考此链接 https://www.postgresql.org/docs/8.1/static/sql-createsequence.html
例如
class ProductA {
constructor(options) {
Object.assign(this, {
weight: 5,
height: 10,
price: 7
}, options);
}
}
class ProductB extends ProductA {
constructor(options){
super(Object.assign({
height: 12
}, options));
}
}
答案 1 :(得分:0)
在PostgreSQL中你会使用
CREATE TABLE table_10 (id serial PRIMARY KEY, other text NOT NULL);
然后id
的类型为integer
,创建了一个序列table_10_id_seq
,并将nextval
调用添加到DEFAULT
的{{1}}子句中列。
您可以使用id
中的\d
进行检查:
psql
此外,该列属于该表,并且在删除表时将自动删除。
您插入省略\d table_10
Table "laurenz.table_10"
Column | Type | Modifiers
--------+---------+-------------------------------------------------------
id | integer | not null default nextval('table_10_id_seq'::regclass)
other | text | not null
Indexes:
"table_10_pkey" PRIMARY KEY, btree (id)
列的行,如下所示:
id
然后将使用INSERT INTO table_10 (other) VALUES ('something');
值。
如果你想“徒步”做同样的事情,例如为序列使用不同的名字或不同的起始值,那将是这样的:
DEFAULT