使用 id 生成器方法将记录插入数据库时,哪种数据类型更好



我的表在Oracle中被称为tb_student。它的 id 是 NUMBER(9)。我发现使用 jdbctemple 搜索 id 可以通过字符串定义。java代码运行良好。但是现在我想将数据库从Oracle迁移到PostgreSQL。

迁移后,java代码是错误的。所以我将id从numeric改为varchar,并且不需要更改表索引。代码运行良好。但是我的老板说我不应该改变表,我应该改变Java代码,将id类型更改为Long。

哪种方式更好?我应该更改列的数据类型吗?还是我应该更改 java 代码?哪个最好?

你的老板显然是对的,对不起。

数据类型应与实际数据匹配,而不是根据代码中发生的事故进行选择。

首要原因是您只能在numeric(9)列中存储整数值,因此没有字母爬入的危险。此外,请考虑会导致值不同的前导零或空格,即使它们在数字上相同。最后,您在使用 < 或类似查询条件时遇到问题,因为字符串的语义不同。

你的列叫ID所以从建模的角度来看,它应该是数字,旁边它取决于很多事情,如果这个列/表是新的,你可以从数据库级别进行更改,或者然后你必须确保它没有外键或过程使用此列ID作为数字,甚至在 Java 代码中也没有将其用作 int。这里没有最佳实践,但似乎最好从 java 代码进行更改。

相关内容

最新更新