sql server 저장 대상 문자열 을 유 니 크 identifier 로 변환 하 는 데 실 패 했 습 니 다.

배경
웹 응용 프로그램 은 ssh 프레임 워 크,데이터베이스 에 사용 되 는 sql server 2014 버 전 을 사용 합 니 다.
2.문제:
고객 이 요구 하 는 ID 열의 데이터 형식 은 유 니 크 identifier 여야 합 니 다.처음에 실체 류 의 ID 는 자바.lang.string 형식 으로 설계 되 었 습 니 다.맵 파일 에 있 는 ID 의 증가 방식 은 uid.hex 입 니 다.

private java.lang.String id;

public java.lang.String getId(){
return id;
}

public void setId(java.lang.String id){
this.id=id;
}

<id name="id" column="ID"  type="java.lang.String">
<generator class="uuid.hex"></generator>
</id>
저장 시간 오류:문자열 유 니 크 identifier 를 실행 하 는 데 실 패 했 습 니 다.
3.해결 방안:
맵 파일 에 있 는 ID 의 증가 방식 을"assigned"로 변경 하여 프로그램 에 값 을 부여 합 니 다.

/*    */

<id name="id" column="ID"  type="java.lang.String">
<generator class="assigned"></generator>
</id>

/*    */

UUID uuid = java.util.UUID.randomUUID();
object.setId(uuid.toString);

this.save(object);
첨부:테이블 을 만 드 는 문장

CREATE TABLE tableName
  (
    ID UNIQUEIDENTIFIER,
    --      
  );
추가 지식:SQLServer 의 uniqueidentifier 데이터 형식 이해
uniqueidentifier 는 전역 의 유일한 표시 자(GUID)로 이해 할 수 있 으 며,newid 함 수 를 사용 하여 값 을 초기 화 할 수 있 으 며,문자열 의 상 수 를 다음 과 같은 형식 으로 변환 할 수 있 습 니 다(xxxxxxxx-xxxx-xxxxxxxxxxxxxxxxxxxxxxxxx,그 중 x 는 0-9 또는 a-f 범위 내의 16 진수 입 니 다).
예 를 들 어 6F9619FF-8B86-D011-B42D-00C04FC964FF 는 유효한 uniqueidentifier 값 이다.
비교 연산 자 는 유 니 크 identifier 값 과 함께 사용 할 수 있 습 니 다.그러나 배열 은 두 값 을 비교 하 는 비트 패턴 을 통 해 이 루어 지 는 것 이 아니다.유 니 크 identifier 값 을 실행 할 수 있 는 동작 은 비교(=,<,<,>,<=,>=)와 NULL(IS NULL 과 IS NOT NULL)만 있 습 니 다.
다른 산술 연산 자 를 사용 할 수 없습니다.모든 열 제약 및 속성(IDENTITY 제외)은 유 니 크 identifier 데이터 형식 에 사용 할 수 있 습 니 다.

declare @myid uniqueidentifier
set @myid=newid()
print 'Value of @myid is '+cast(@myid as varchar(255))
이 프로그램 을 실행 할 때마다 다른 유 니 크 identifier 를 되 돌려 줍 니 다.
uniqueidentifier 데이터 형식 은 IDENTITY 속성 처럼 새로 삽 입 된 줄 에 자동 으로 새 ID 를 생 성하 지 않 습 니 다.
새로운 유 니 크 identifier 값 을 얻 기 위해 서 표 는 NEWID 함수 의 DEFAULT 자 구 를 지정 하거나 NEWID 함수 의 INSERT 문 구 를 사용 해 야 합 니 다.

CREATE TABLE MyUniqueTable
(UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID(),
Characters VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('abc')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'def')
GO
sql server 저장 대상 문자열 을 유 니 크 identifier 로 변환 하 는 데 실패 한 문 제 는 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.많은 응원 바 랍 니 다.

좋은 웹페이지 즐겨찾기