Java 插入不重复的int-mysql
我有一个数据库{id,name,uuid,world,x,y,z} 我如何插入到这个数据库中,如果存在任何一行{world,x,y,z}与我插入的行相同,那么旧的行将被删除。我将id作为主键,并设置为自动递增 我搜索了这个论坛和谷歌,但没有找到任何有助于我的问题Java 插入不重复的int-mysql,java,mysql,sql-insert,Java,Mysql,Sql Insert,我有一个数据库{id,name,uuid,world,x,y,z} 我如何插入到这个数据库中,如果存在任何一行{world,x,y,z}与我插入的行相同,那么旧的行将被删除。我将id作为主键,并设置为自动递增 我搜索了这个论坛和谷歌,但没有找到任何有助于我的问题 谢谢您将使用插入。在重复密钥更新时: insert into table(name, uuid, world, x, y, z) values (@name, @uuid, @world, @x, @y, @z) on
谢谢您将使用
插入。在重复密钥更新时
:
insert into table(name, uuid, world, x, y, z)
values (@name, @uuid, @world, @x, @y, @z)
on duplicate key update name = values(name),
uuid = values(uuid);
变量@name
等只是值的占位符。这还假设id
是自动递增的,因此不需要插入它
要使其正常工作,您需要在四列上创建一个唯一的索引:
create unique index idx_table_world_x_y_z on table(world, x, y, z);
如果这些已声明为主键,则不需要这样做。来自:
REPLACE
的工作原理与INSERT
完全相同,只是如果
该表的值与主键
或
UNIQUE
索引,在插入新行之前删除旧行
因此,声明一个UNIQUE
索引行列(word、x、y、z),然后:
REPLACE INTO my_table (name, uuid, world, x, y, z)
VALUES (
-- your values here
)
你真的需要删除它并用新的id替换它,还是想用相同的id更新它?我不确定。我希望它尽可能简单,对数据库服务器进行尽可能少的查询。如果你有一个解决方案,我保留id,那么这是完美的,只要它是在一个查询完成?接受这是最直接的答案。