我有一个表,我希望在找到重复的主(唯一)键时替换其中的一行。
Create table History (
id varchar(5) not null,
name varcah(30),
primary key (id)
) engine=InnoDB character set utf8;
我在 hibernate 中使用它。 id 列声明为 @Id @Column(name="id", unique=true, nullable=false)
帮我修改上面的 SQL,Hibernate 注释允许在发现重复的主键时进行替换
最佳答案
数据库主键不会被更新/替换。有变通办法,但这些都是不好的做法。
最好使用 AUTO INCREMENT(MySQL)、IDENTITY(MSSQL) 或 SEQUENCE(ORACLE, PostgreSQL) ID 生成。
如果您使用手动 ID 分配并且遇到重复的主键违规,则必须检查您当前的应用程序并发设计。手动分配 id 不是线程安全的吗?
数据库序列或 AUTO-INCREMENT ID 将使您避免重复的主键违规。
关于java - 找到重复的主键时替换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23671049/