2014-09-29 4 views
0

이것이 바보 같은 질문인지 아닌지는 모르지만이를 해결해야합니다. 나는 고글로 검색했지만 결과는 만족스럽지 않습니다. 질문은> 나는 테이블에 어떤 가치를 삽입하고있다. 데이터베이스와 grails 2.1.1로 oracle을 사용하고 있습니다. 테이블에 값을 삽입 할 때 행 ID는 1로 시작하지 않지만 1부터 시작하려면 해당 특정 테이블을 시작해야합니다. 원인 테이블에 4 개의 행만 있으므로 1과 같은 ID로 삽입해야합니다 , 2,3,4 그래서 나는 여러 가지 응용 분야에서 그들을 얻을 수 있습니다. 그러나 다른 이드에게주고 나서 나는 1,2,3,4로 바꿨다. grails에서 도메인 수준에서이 작업을 수행 할 수있는 방법이 있습니까?Grails의 oracle 데이터베이스 테이블에있는 행 1의 데이터 삽입

답변

1

오라클 시퀀스를 생성해야합니다. 당신이 다음을 추가 한 다음 새 변경 집합을 추가 사용하고 liquibase 마이그레이션을 사용하는 경우

:

http://www.techonthenet.com/oracle/sequences.php

CREATE SEQUENCE sequence_name 
MINVALUE value 
MAXVALUE value 
START WITH value 
INCREMENT BY value 
CACHE value; 

CREATE SEQUENCE my_seq 
MINVALUE 1 
MAXVALUE 4 
START WITH 1 
INCREMENT BY 1 
CACHE 1; 

그런 다음 도메인에 순서 편집을 할

class MyDomain { 
    ... 

    static mapping = { 
    id generator:'sequence', params:[sequence:'my_seq'] 
    } 
} 

를 지정 당신에게 changelog.groovy.

는 liquibase를 사용하여 시퀀스를 만드는 방법에 대한

sequence.groovy 추가 옵션을 보려면

changeSet(author: "me", id: "add-sequence") { 
    createSequence(sequenceName: "my_seq") 
} 

changelog.groovy

include file: 'sequence.groovy' 

당신의 Grails의-응용 프로그램/마이그레이션에 변경 집합을 추가 시퀀스를 만들려면 여기를보십시오 : http://www.liquibase.org/documentation/changes/create_sequence.html

+0

어디에서이 순서를 만들어야합니까? 전자 응용 프로그램에서 어떻게이 시퀀스를 얻을?! –

+0

oracle 데이터베이스에 시퀀스를 만들어야합니다. 마이그레이션을 위해 grails liquibase 플러그인을 사용하고 있습니까? 또는 어떻게 테이블을 마이그레이션/생성합니까? –

+0

database-migration-1.1 –

0

대신에 테이블에 자신의 id 필드를 만들고 원하는 ID를 생성하려면 시퀀스를 사용하십시오 (예 : create sequence id_seq start with 1 increment by 1). 삽입하는 동안 insert int TABLE_NAME values (id_seq.nextval, ...);을 사용하십시오. 오라클의 row_id에 의존하지 말 것을 권유합니다. 왜냐하면 db에 의해 제어되고 필요에 따라 genereted되기 때문입니다 (oracle ref 참조).