如果我在我的h2数据库中创建一个新的表格,就像这样...
CREATE TABLE MAININCOMER(timestamp TIMESTAMP, value REAL);
这意味着当我写入表格时,ID将被隐藏并自动递增,对吧? - (据我从教程和功能中学到的)
是否会将主键自动分配给ID ?在只有2列的表类型中主键是多么重要?或者我应该作为最佳实践创建分配给时间戳的主键的表?
CREATE TABLE MAININCOMER(timestamp TIMESTAMP PRIMARY KEY, value REAL);
谢谢,Alex
答案 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约束,并且它会自动增量。
将时间戳用作主键是一种不好的做法。很难确保独特的约束,因为你可以同时到达事件(有点,这取决于你的时间分辨率)。加上整数更容易索引和找回。