什么是MySQL的默认主键生成策略

时间:2014-04-12 09:24:01

标签: mysql hibernate primary-key auto-increment schemaexport

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

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

修改 Hibernate有一个标识符生成策略native根据底层数据库的功能选择identity,sequence或hilo。我使用带有hibernate.hbm2ddl.auto=update的MySQL,为id BIGINT(20) NOT NULL AUTO_INCREMENT Java数据类型的id属性生成Long

我想了解Hibernate在使用AUTO_INCREMENT工具时如何选择SchemaExportAUTO_INCREMENT是MySQL的默认主键生成策略吗?

3 个答案:

答案 0 :(得分:0)

来自here

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

如果没有为AUTO_INCREMENT列指定值,则MySQL会自动分配序列号。您还可以向列显式指定0以生成序列号。如果列声明为NOT NULL,则还可以为列分配NULL以生成序列号。

每个新行的值都会增加

该值是唯一的,不可能重复

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

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

答案 1 :(得分:0)

始终没有必要使用自动增量将其作为主键。

CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    PRIMARY KEY (P_Id)
)

答案 2 :(得分:0)

您可以使用'SERIAL'数据类型。

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

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