my sql 여러 개의 메 인 키 를 설정 하 는 작업 을 실현 합 니 다.

user 표,주민등록번호 유일,핸드폰 번호,메 일 박스 유일
구현 방식:
시계 구 조 는 움 직 이지 않 아 도 된다.홈 키 Id 인덱스 구현

그림 형식 에서 인덱스 형식 을 유 니 크 의 유일한 선택 표시 줄 로 설정 하고 이름 을 지정 하면 됩 니 다.색인 방식 btree 면 됩 니 다.오케이~
보충:my sql 다 중 표 메 인 키 중복 되 지 않 음
같은 데이터베이스 에 두 장의 표 가 있 는데 그 안의 필드 는 모두 같 습 니 다.단지 저 장 된 데 이 터 를 구분 해 야 하기 때 문 입 니 다.하지만 메 인 키 는 중복 되 지 않 습 니 다.구체 적 인 실현 은 다음 과 같다.
새 데이터베이스 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>
최종 구현:


이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기