-2

AUTO_INCREMENT当将新行插入 MySQL 中的表时,我一直在使用属性生成主键。

有人可以帮助我了解 MySQL 的默认主键生成策略是什么以及它是如何工作的吗?

EDIT Hibernate 有一个标识符生成策略native,根据底层数据库的功能选择身份、序列或 hilo。我使用了为Java 数据类型的属性hibernate.hbm2ddl.auto=update生成id BIGINT(20) NOT NULL AUTO_INCREMENT的MySQL。idLong

我试图了解 HibernateAUTO_INCREMENT在使用SchemaExport工具时是如何选择的。是AUTO_INCREMENTMySQL 的默认主键生成策略吗?

4

3 回答 3

0

这里

AUTO_INCREMENT 属性可用于为新行生成唯一标识。

如果没有为 AUTO_INCREMENT 列指定值,那么 MySQL 会自动分配序列号。您还可以将 0 显式分配给列以生成序列号。如果该列被声明为 NOT NULL,也可以将 NULL 分配给该列以生成序列号。

每个新行的值都会增加

该值是唯一的,不能重复

如果删除了一行,则不会重新分配该行的 auto_increment 列。

可以使用 mySQL 函数 LAST_INSERT_ID() 访问最后插入行的 auto_increment 值,但它必须在插入查询之后立即在同一数据库连接中调用

于 2014-04-12T09:26:48.530 回答
0

Always not necessary to use auto increment to put it as primary key.

CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    PRIMARY KEY (P_Id)
)
于 2014-04-12T09:28:44.290 回答
0

You can use 'SERIAL' data type.

CREATE TABLE test(
 "id" Serial NOT NULL,
);

ALTER TABLE "test" ADD CONSTRAINT "Key1" PRIMARY KEY ("id");

于 2014-04-12T09:29:32.810 回答