主頁 > 知識庫 > mysql 實(shí)現(xiàn)設(shè)置多個(gè)主鍵的操作

mysql 實(shí)現(xiàn)設(shè)置多個(gè)主鍵的操作

熱門標(biāo)簽:武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 地圖標(biāo)注費(fèi)用是多少 怎樣在地圖標(biāo)注銷售區(qū)域 曲靖移動外呼系統(tǒng)公司 電話外呼系統(tǒng)改號 啥是企業(yè)400電話辦理 外呼系統(tǒng)打電話上限是多少 百應(yīng)電話機(jī)器人優(yōu)勢 南昌三維地圖標(biāo)注

user表,身份證號碼要唯一,手機(jī)號碼,郵箱要唯一

實(shí)現(xiàn)方式:

表結(jié)構(gòu)不用動。一個(gè)主鍵Id 加索引實(shí)現(xiàn)

如圖類型設(shè)置索引類型為Unique 唯一 選擇欄位,命個(gè)名就行。索引方式btree 就好。ok啦~

補(bǔ)充:mysql實(shí)現(xiàn)多表主鍵不重復(fù)

同一個(gè)數(shù)據(jù)庫中有兩張表,里面字段都是一樣,只是因?yàn)榇娴臄?shù)據(jù)要區(qū)分開。但是主鍵不能重復(fù)。具體實(shí)現(xiàn)如下:

新建數(shù)據(jù)庫 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;

新增一個(gè)序列:

INSERT INTO sequence VALUES ('seq_test', '0', '1');

創(chuàng)建currval函數(shù),用于獲取序列當(dāng)前值:

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;

查詢當(dāng)前值:

select currval('seq_test');

創(chuàng)建nextval函數(shù),用于獲取序列下一個(gè)值:

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;

查詢下一個(gè)值

select nextval('seq_test');

具體實(shí)現(xiàn):

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>

最終實(shí)現(xiàn):

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • MySQL中的主鍵以及設(shè)置其自增的用法教程
  • 深入Mysql,SqlServer,Oracle主鍵自動增長的設(shè)置詳解
  • mysql下創(chuàng)建字段并設(shè)置主鍵的php代碼

標(biāo)簽:滄州 吉林 資陽 甘南 錦州 隨州 荊州 黑河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql 實(shí)現(xiàn)設(shè)置多個(gè)主鍵的操作》,本文關(guān)鍵詞  mysql,實(shí)現(xiàn),設(shè)置,多個(gè),主鍵,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql 實(shí)現(xiàn)設(shè)置多個(gè)主鍵的操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql 實(shí)現(xiàn)設(shè)置多個(gè)主鍵的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章