在MYSQL中,我想向auto_increment的主键那样,自动生成UUID。

时间:2021-02-05 09:07:37
比如主键是ID,
insert into (testfld) values ('asdf');
结果集应该是
ID   testfld
1     asdf

现在我想让id的值变成UUID生成的内容,而且还不能修改insert语句,可以么?请举例,谢谢。

13 个解决方案

#1


必须改INSERT语句。
把ID列包含进去。

MYSQL的自增是INT型的。

UUID的内容是字符串的。

#2


to 0608:
可以把INT类型改成varchar的,但是不能改变insert语句,可以么?有办法么?

#3



create table cfg_nextId (
  tableName varchar(128),
  nextId varchar(32)
);
create procedure proc_getNextId ( @tableName varchar(128), @nextId varchar(32) output )
as begin
  select @nextId = nextId from cfg_nextId where tableName = @tableName;
  update cfg_nextId set nextId = nextId+1 -- 或其他方法
  where tableName = @tableName;
end;

#4


to tim_spac:
我是不想修改SQL语句,你写的这个难道不用修改SQL语句么?


自己回答自己吧,在网上翻腾了半天,我的mysql是5的版本,可以用触发器来实现。谢谢大家。

#5


bulecode客气了

#6


触发器是不能对自己操作的。LZ你的办法有了? 

#7


to 0608:
可以的,我已经测试成功了,而且已经部署工作了。谢谢大家。

#8


解决了就好。

#9


楼主是怎么解决的呀
可否共享下下
thank you

#10


该回复于2008-05-04 10:35:52被版主删除

#11


请问楼主如何解决的,我现在也正遇上这个问题,谢谢共享。我邮箱:chenhuayun1981@tom.com, QQ: 59963691

#12


谢谢,各位,问题已解决,直接用UUID()即可。

#13


引用 12 楼 chenhy_81 的回复:
谢谢,各位,问题已解决,直接用UUID()即可。

Good.

#1


必须改INSERT语句。
把ID列包含进去。

MYSQL的自增是INT型的。

UUID的内容是字符串的。

#2


to 0608:
可以把INT类型改成varchar的,但是不能改变insert语句,可以么?有办法么?

#3



create table cfg_nextId (
  tableName varchar(128),
  nextId varchar(32)
);
create procedure proc_getNextId ( @tableName varchar(128), @nextId varchar(32) output )
as begin
  select @nextId = nextId from cfg_nextId where tableName = @tableName;
  update cfg_nextId set nextId = nextId+1 -- 或其他方法
  where tableName = @tableName;
end;

#4


to tim_spac:
我是不想修改SQL语句,你写的这个难道不用修改SQL语句么?


自己回答自己吧,在网上翻腾了半天,我的mysql是5的版本,可以用触发器来实现。谢谢大家。

#5


bulecode客气了

#6


触发器是不能对自己操作的。LZ你的办法有了? 

#7


to 0608:
可以的,我已经测试成功了,而且已经部署工作了。谢谢大家。

#8


解决了就好。

#9


楼主是怎么解决的呀
可否共享下下
thank you

#10


该回复于2008-05-04 10:35:52被版主删除

#11


请问楼主如何解决的,我现在也正遇上这个问题,谢谢共享。我邮箱:chenhuayun1981@tom.com, QQ: 59963691

#12


谢谢,各位,问题已解决,直接用UUID()即可。

#13


引用 12 楼 chenhy_81 的回复:
谢谢,各位,问题已解决,直接用UUID()即可。

Good.