大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
MySQL 字段 DEFAULT uuid 怎么实现
创新互联成都网站建设按需定制制作,是成都网站营销推广公司,为加固提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站设计热线:13518219792
不用改c文件... 触发器完美解决
DROP TRIGGER IF EXISTS `test`.`default_id`//
CREATE TRIGGER `test`.`default_id` BEFORE INSERT ON `test`.`test`
FOR EACH ROW if (new.id='' or new.id is null) then
set new.id= uuid();
end if
//
执行sql的时候把Delimiter 改成 // 即可
打开我的navicat,然后找到我的teacher表,选中它,然后点击菜单栏上的‘design table'
在弹出的对话框中找到“Foreign Keys”,然后单机。
然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思。‘name’:可以不填,你一会保存成功系统会自动生成。FieldName’:就是你要把哪个键设置为外键。这里选择‘dept’,‘Reference DadaBase’:外键关联的数据库。‘Reference Table‘ :关联的表 这里是dept表‘Forgin filed Names’:关联的的字段,这里是code‘ondelete’:就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,teacher》dept字段会设置为null.
设置完成后点击‘save’保存退出,也可以点击‘add Foreign Key’再添加一个外键。
打开我的navicat,然后找到我的teacher表,选中它,然后点击菜单栏上的‘design table’。如下图:
请点击输入图片描述
在弹出的对话框中找到“Foreign Keys”,然后单机。如下图:
请点击输入图片描述
然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思。‘name’:可以不填,你一会保存成功系统会自动生成。FieldName’:就是你要把哪个键设置为外键。这里选择‘dept’,‘Reference DadaBase’:外键关联的数据库。‘Reference Table‘ :关联的表 这里是dept表‘Forgin filed Names’:关联的的字段,这里是code‘ondelete’:就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,teacher》dept字段会设置为null。如图
请点击输入图片描述
设置完成后点击‘save’保存退出,也可以点击‘add Foreign Key’再添加一个外键。k如图:
请点击输入图片描述
MYSQL
中表1需要准备大量数据,内容主要取自表2,id必须为32位uuid
(项目所有表都是这样,没办法),
准备这样插入:
1
INSERT
INTO
TBL_ONE
(ID,
SOID,
SNAME)
SELECT
2
REPLACE
(UUID(),
'-',
''),
3
TWO.ID,
4
TWO.NAME
5
FROM
6
TBL_TWO
TWO
报错:
Duplicate
entry
'4534c15dc2a111e6a9ab000ec6c596eb'
for
key
'PRIMARY',显然主键冲突了,
REPLACE
(UUID(),
'-',
'')
仅执行了一次,
找了半天,似乎也没有最简单的解决方案。退而求其次,我想到的最简单解决方案:
1
INSERT
INTO
TBL_ONE
(ID,
SOID,
SNAME)
SELECT
2
UUID(),
#UUID()为什么可以?
3
TWO.ID,
4
TWO.
NAME
5
FROM
6
TBL_TWO
TWO;7
8
UPDATE
TBL_ONE
SET
ID
=
REPLACE
(ID,
'-',
'');
uuid()生成的id不会重复,但是会有"-",用空格替换一下就ok了。
mysql设置UUID为主键需要先将数据类型设置为VARCHAR(36),然后插入数据的时候用UUID函数插入UUID。下面我用win10系统下的CMD命令行具体演示一下:
1、打开CMD,输入mysql -uroot -p命令连接mysql,如下图所示
2、通过create创建表,指定ID为varchar(36),并设置为主键,如下图所示
3、在插入数据的时候,调用uuid()函数往主键字段里插入uuid值,如下图所示
4、最后查询插入的数据就可以看到id主键列存放的是uuid类型了,如下图所示