为每个INSERT增加表ID的值

我正在使用PostgreSQL设置所有表格。 我目前有一个名为comments的表,其中一个名为comment_id的主键是一个长度为4的VARCHAR

我有一个表单设置插入一个新的注释到数据库但我很困惑,我将如何从我之前的值获取我的Java servlet ++的comment_id。 例如0001到0002。

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

这是文档

基本上,你做的事情就像

 CREATE SEQUENCE mysequence START 101 

然后,当你插入时,你做了类似的事情

 INSERT INTO my_comment values (nextval('mysequence'), 'this is my comment'); 

使用serial伪数据类型开头。 它自动创建并附加序列对象,并将DEFAULT设置为序列中的nextval() 。 它可以满足您的所有需求。 列的有效类型是integer 。 也有重要的。 只需点击手册链接即可。

 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提供列列表。 如果您以后更改表格布局,您的代码可能会以有害的方式破坏。 跳过ad-hoc命令的列列表或保证表结构(例如在同一事务中创建表时)可能没问题。 除此之外,请提供列表!

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

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

这里有优秀手册的详细信息。