mysql怎么建立主键外键(mysql 实现设置多个主键的操作)
类别:数据库 浏览量:2377
时间:2021-10-24 10:48:32 mysql怎么建立主键外键
mysql 实现设置多个主键的操作user表,身份证号码要唯一,手机号码,邮箱要唯一
实现方式:
表结构不用动。一个主键id 加索引实现
如图类型设置索引类型为unique 唯一 选择栏位,命个名就行。索引方式btree 就好。ok啦~
补充:mysql实现多表主键不重复
同一个数据库中有两张表,里面字段都是一样,只是因为存的数据要区分开。但是主键不能重复。具体实现如下:
新建数据库 mytest
新建user表和admin表
|
create table ` user ` ( `user_id` int (11) not null , `user_name` varchar (255) not null , ` password ` varchar (255) not null , `phone` varchar (255) not null , primary key (`user_id`) ) comment= '用户表' collate = 'utf8_general_ci' engine=innodb; |
|
create table `admin` ( `user_id` int (11) not null , `user_name` varchar (255) not null , ` password ` varchar (255) not null , `phone` varchar (255) not null , primary key (`user_id`) ) comment= '管理员表' collate = 'utf8_general_ci' engine=innodb; |
新建序列表:
|
create table ` sequence ` ( `seq_name` varchar (50) not null , `current_val` int (11) not null , `increment_val` int (11) not null default '1' , primary key (`seq_name`) ) comment= '序列表' collate = 'utf8_general_ci' engine=innodb; |
新增一个序列:
|
insert into sequence values ( 'seq_test' , '0' , '1' ); |
创建currval函数,用于获取序列当前值:
|
delimiter # create function currval(v_seq_name varchar (50)) returns integer (11) begin declare value integer ; set value = 0; select current_val into value from sequence where seq_name = v_seq_name; return value; end ; |
查询当前值:
|
select currval( 'seq_test' ); |
创建nextval函数,用于获取序列下一个值:
|
delimiter # create function nextval (v_seq_name varchar (50)) returns integer (11) begin update sequence set current_val = current_val + increment_val where seq_name = v_seq_name; return currval(v_seq_name); end ; |
查询下一个值
|
select nextval( 'seq_test' ); |
具体实现:
|
< insert id= "adduser" parametertype= "user" > <selectkey keyproperty= "userid" resulttype= "int" order = "before" > select nextval( 'seq_test' ); </selectkey> insert into user (user_id,user_name, password ,phone) values (#{userid},#{username, jdbctype= varchar },#{ password , jdbctype= varchar }, #{phone, jdbctype= varchar }) </ insert > |
|
< insert id= "addadmin" parametertype= "admin" > <selectkey keyproperty= "userid" resulttype= "int" order = "before" > select nextval( 'seq_test' ); </selectkey> insert into admin(user_id,user_name, password ,phone) values (#{userid},#{username, jdbctype= varchar },#{ password , jdbctype= varchar }, #{phone, jdbctype= varchar }) </ insert > |
最终实现:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/qq_39930369/article/details/86687285
您可能感兴趣
- mysql 时间戳获取(MySQL时间盲注的五种延时方法实现)
- mysql数据库基本增删改查基本语句(MySQL表的增删改查基础教程)
- mysql锁机制图解(详解mysql 中的锁结构)
- mysql怎么和sqlyog连接(Mysql桌面工具之SQLyog资源及激活使用方法告别黑白命令行)
- 安装mysql中要注意什么问题(安装Mysql时可能会遇到的一些疑难杂症)
- mysql密码设置(mysql密码中有特殊字符&在命令行下登录的操作)
- mysql并发查询优化(详解MySQL 联合查询优化机制)
- mysql高级变量查询(MySQL 使用自定义变量进行查询优化)
- mysql 死锁查询(MySQL slave 延迟一列 外键检查和自增加锁)
- mysql left join索引怎么使用(详解mysql 使用left join添加where条件的问题分析)
- 创建数据库入门教程mysql(MySQL数据库安装教程一学就会)
- mysql的简单介绍(MySQL Shell的介绍以及安装)
- mysql权限管理详解(Mysql 用户权限管理实现)
- mysql的count知识(MySQL中MTR的概念)
- mysql数据库触发器(MySQL中使用游标触发器的方法)
- mysql8.0.26安装教程(mysql 8.0.22压缩包完整安装与配置教程图解亲测安装有效)
- 大众推出了第五代高尔夫GT(大众推出了第五代高尔夫GT)
- 换代在即,现在是抄底 7.5代 高尔夫的最佳时机吗(换代在即现在是抄底)
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
- 七年前的这部剧有毒,全剧只有女主红到发紫,男主至今无人认识(七年前的这部剧有毒)
- 宋轶除了演过于曼丽,原来还演过一个青楼女子(宋轶除了演过于曼丽)
- 赵丽颖第一部当女主的戏,主角配角个个都是实力演员(赵丽颖第一部当女主的戏)
热门推荐
- OpenLDAP docker使用教程(Docker搭建OpenLDAP+phpLDAPadmin统一用户认证的方法)
- dedecms优化关键词(DedeCMS栏目列表推荐文章加粗效果去除方法)
- jenkins 构建docker镜像(docker搭建jenkins+maven代码构建部署平台)
- css经典技巧(CSS性能优化提高css性能的方法)
- php中命名空间常用吗(PHP命名空间定义与用法实例分析)
- Http协议头信息
- redis新手入门教学(scrapy-redis的安装部署步骤讲解)
- docker jdk离线安装(docker安装openjdk并运行jar包的操作方法)
- sqlserver2014怎么重新激活(解决Windows 10家庭版安装SQL Server 2014出现.net 3.5失败问题)
- python 从入门到实践笔记(python基础梳理一推荐)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9