我们将MS SQL 2008作为Hibernate的数据库。
现在我们计划继续前往Postgres。
我知道Postgres没有主键列的自动增量功能。
我听说过每个表的SERIAL数据类型或序列,然后使用带有主键的nextval
。
MS SQL数据库足够大,包含大约150个表。
所以,我想要意见,并希望知道我们应该通过创建序列或SERIAL工作。
哪一个可能是更好的选择?
答案 0 :(得分:2)
在PostgreSQL中,串口类型是自动的,就像MSSQL / MySQL等中的自动增量一样。试试例如:
create temporary table test (
id serial primary key,
data text
);
insert into test (data) values ('foo'), ('bar');
select * from test;
id | data ----+------ 1 | foo 2 | bar (2 rows)
答案 1 :(得分:1)
它以其他方式起作用。我在<property name="hbm2ddl.auto">create</property>
中提供了hibernate.cfg.xml
。因此,表格是在首次运行时创建的。
然后需求发生了变化,我只需要获得12-15个表的数据。所以,我使用MS SQL Server 2008为它生成了一个脚本。
然后当然为每个表的插入手动更改了sysntax。
所需要的东西很少。
在MSSQL中,我们tinyint
作为boolean
的数据类型。因此,Postgres手动转换为'true'和'false'。
MS SQL在HEXA中导出timstamp
,并在脚本生成期间为您提供CAST ... AS DATETIME
。我在Postgres中将它们更改为CURRENT_TIMESTAMP
。