5

有没有一种标准化的方法可以在 SQL 中创建一个带有自动增量列(我们称之为 ID)的表,以便我基本上可以在所有数据库中使用它?

(例如在 SQL-92 中标准化)如果是这样 - 怎么样?如果不是,为什么?我认为 auto_increment 是一个非常常用的属性,所以我认为标准化它非常重要......

4

3 回答 3

2

不,谢谢。MySQL 中有 AUTO_INCREMENT,但例如在 MS SQL 中,这称为 IDENTITY。许多东西在 SQL 中并没有真正标准化——大多数都在模式创建区域。

这是一团糟,但是您可以使用诸如 Hibernate/NHibernate 之类的东西来尝试使用单个代码库。

于 2013-02-28T23:30:54.313 回答
1

您可以使用所谓的身份列

CREATE TABLE foo(id int GENERATED ALWAYS AS IDENTITY);

这在 SQL 标准中,应该被 PostgreSQL 10 和 Oracle 支持:

https://www.2ndquadrant.com/en/blog/postgresql-10-identity-columns/#comment-248607

于 2019-04-27T09:37:23.840 回答
0

在 Oracle 中,您需要创建一个 SEQUENCE

SQLite 将它用于 rowid 和它的同义词,例如 RowIdSyn INTEGER PRIMARY KEY AUTOINCREMENT

于 2017-11-25T21:42:30.273 回答