当在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
工具时如何选择SchemaExport
。 AUTO_INCREMENT
是MySQL的默认主键生成策略吗?
答案 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”);