이것이 바보 같은 질문인지 아닌지는 모르지만이를 해결해야합니다. 나는 고글로 검색했지만 결과는 만족스럽지 않습니다. 질문은> 나는 테이블에 어떤 가치를 삽입하고있다. 데이터베이스와 grails 2.1.1로 oracle을 사용하고 있습니다. 테이블에 값을 삽입 할 때 행 ID는 1로 시작하지 않지만 1부터 시작하려면 해당 특정 테이블을 시작해야합니다. 원인 테이블에 4 개의 행만 있으므로 1과 같은 ID로 삽입해야합니다 , 2,3,4 그래서 나는 여러 가지 응용 분야에서 그들을 얻을 수 있습니다. 그러나 다른 이드에게주고 나서 나는 1,2,3,4로 바꿨다. grails에서 도메인 수준에서이 작업을 수행 할 수있는 방법이 있습니까?Grails의 oracle 데이터베이스 테이블에있는 행 1의 데이터 삽입
0
A
답변
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
대신에 테이블에 자신의 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 참조).
어디에서이 순서를 만들어야합니까? 전자 응용 프로그램에서 어떻게이 시퀀스를 얻을?! –
oracle 데이터베이스에 시퀀스를 만들어야합니다. 마이그레이션을 위해 grails liquibase 플러그인을 사용하고 있습니까? 또는 어떻게 테이블을 마이그레이션/생성합니까? –
database-migration-1.1 –