H2数据库创建主键

时间:2016-09-07 12:17:28

标签: database h2

如果我在我的h2数据库中创建一个新的表格,就像这样...

CREATE TABLE MAININCOMER(timestamp TIMESTAMP, value REAL);

这意味着当我写入表格时,ID将被隐藏并自动递增,对吧? - (据我从教程和功能中学到的)

是否会将主键自动分配给ID ?在只有2列的表类型中主键是多么重要?或者我应该作为最佳实践创建分配给时间戳的主键的表?

CREATE TABLE MAININCOMER(timestamp TIMESTAMP PRIMARY KEY, value REAL);

谢谢,Alex

2 个答案:

答案 0 :(得分:2)

试试这个:

create table mainincomer(id bigint auto_increment,t timestamp,value real,primary key(id))

答案 1 :(得分:1)

否:您的表格中没有ID列,因为它未在您的DDL CREATE TABLE中列出。

我知道添加此类自动递增列以用作主键的最简单方法是ID IDENTITY。小心,因为它特定于H2而不是便携式。

但它比任何其他数据库都短得多:-D

请将您的DDL更改为完整行:

CREATE TABLE MAININCOMER(id IDENTITY, timestamp TIMESTAMP, value REAL);

您可以在H2网络控制台中测试它,如下所示:

@loop 1000 insert into mainincomer (timestamp) values (now());

这将插入1000条记录,您将看到ID被定义为BIGINT(19) NOT NULL,将为其分配一个PRIMARY KEY约束,并且它会自动增量。

将时间戳用作主键是一种不好的做法。很难确保独特的约束,因为你可以同时到达事件(有点,这取决于你的时间分辨率)。加上整数更容易索引和找回。