1

我正在使用 PostgreSQL 和我的所有表设置。我目前有comments一个名为主键的表,comment_idVARCHAR长度为 4。

我有一个表单设置来向数据库中插入一个新的评论,但我很困惑如何让我的 Java servlet ++ 来自它以前的值的 comment_id。例如 0001 到 0002。

4

2 回答 2

7

您不想为您的 id 列使用 VARCHAR。在 postgres 中,您可以创建一个序列,然后为每个插入获取该序列的下一个值。

这是文档

基本上,你会做类似的事情

CREATE SEQUENCE mysequence START 101

然后,当您插入时,您会执行类似的操作

INSERT INTO my_comment values (nextval('mysequence'), 'this is my comment');
于 2012-11-29T22:22:00.967 回答
6

使用serial伪数据类型开始。它自动创建和附加序列对象,并从序列中设置DEFAULTnextval()。它可以满足您的所有需求。列的有效类型是integer。还有bigserial. 只需点击手册的链接即可。

CREATE TABLE comments (
    comment_id serial PRIMARY KEY
   ,comment text NOT NULL
   );

您可以忽略命令列INSERT

INSERT INTO my_comment (comment)
VALUES ('My comment here');

comment_id是自动填写的。
但是您应该始终INSERT. 如果您稍后更改表格布局,您的代码可能会以有害的方式中断。可以跳过临时命令的列列表或保证表结构时(例如在同一事务中创建表时)。除此之外,提供一个列列表!

如果您想要comment_id返回结果,而无需再次往返服务器:

INSERT INTO my_comment (comment)
VALUES ('My comment here');
RETURNING comment_id;

优秀手册中的详细信息在这里

于 2012-11-29T22:41:32.310 回答