묻고답하기
모듈 관련 질문요
2010.06.14 21:34
안녕하세요 지금 제가 Planet 모듈 사용하느데요 이걸 다른 프로그램이랑 연동하려면 스키마가 필요하데요
근데 어떻게 해야하는지 모르겠어요
// 테이블 생성 schema 작성
$table_name = $xml_obj->table->attrs->name;
if($this->isTableExists($table_name)) return;
$table_name = $this->prefix.$table_name;
if(!is_array($xml_obj->table->column)) $columns[] = $xml_obj->table->column;
else $columns = $xml_obj->table->column;
foreach($columns as $column) {
$name = $column->attrs->name;
$type = $column->attrs->type;
$size = $column->attrs->size;
$notnull = $column->attrs->notnull;
$primary_key = $column->attrs->primary_key;
$index = $column->attrs->index;
$unique = $column->attrs->unique;
$default = $column->attrs->default;
$auto_increment = $column->attrs->auto_increment;
if($this->column_type[$type]=='INTEGER') $size = null;
else if($this->column_type[$type]=='BIGINT') $size = null;
else if($this->column_type[$type]=='BLOB SUB_TYPE TEXT SEGMENT SIZE 32') $size = null;
else if($this->column_type[$type]=='VARCHAR' && !$size) $size = 256;
$column_schema[] = sprintf('"%s" %s%s %s %s',
$name,
$this->column_type[$type],
$size?'('.$size.')':'',
is_null($default)?"":"DEFAULT '".$default."'",
$notnull?'NOT NULL':'');
if($auto_increment) $auto_increment_list[] = $name;
if($primary_key) $primary_list[] = $name;
else if($unique) $unique_list[$unique][] = $name;
else if($index) $index_list[$index][] = $name;
}
if(count($primary_list)) {
$column_schema[] = sprintf("PRIMARY KEY(\"%s\")%s", implode("\",\"", $primary_list), "\n");
}
if(count($unique_list)) {
foreach($unique_list as $key => $val) {
$column_schema[] = sprintf("UNIQUE(\"%s\")%s", implode("\",\"", $val), "\n");
}
}
$schema = sprintf("CREATE TABLE \"%s\" (%s%s); \n", $table_name, "\n", implode($column_schema, ",\n"));
$output = $this->_query($schema);
if(!$this->transaction_started) @ibase_commit($this->fd);
if(!$output) return false;
if(count($index_list)) {
foreach($index_list as $key => $val) {
// index name 크기가 31byte로 제한으로 index name을 넣지 않음
// Firebird에서는 index name을 넣지 않으면 "RDB$10"처럼 자동으로 이름을 부여함
// table을 삭제 할 경우 인덱스도 자동으로 삭제 됨
$schema = sprintf("CREATE INDEX \"\" ON \"%s\" (\"%s\");",
$table_name, implode($val, "\",\""));
$output = $this->_query($schema);
if(!$this->transaction_started) @ibase_commit($this->fd);
if(!$output) return false;
}
}
foreach($auto_increment_list as $increment) {
$schema = sprintf('CREATE GENERATOR GEN_%s_ID;', $table_name);
$output = $this->_query($schema);
if(!$this->transaction_started) @ibase_commit($this->fd);
if(!$output) return false;
// Firebird에서 auto increment는 generator를 만들어 insert 발생시 트리거를 실행시켜
// generator의 값을 증가시키고 그값을 테이블에 넣어주는 방식을 사용함.
// 아래 트리거가 auto increment 역할을 하지만 쿼리로 트리거 등록이 되지 않아 주석처리 하였음.
// php 함수에서 generator 값을 증가시켜 주는 함수가 있어 XE에서는 굳이
// auto increment를 사용 할 필요가 없어보임.
/*
$schema = 'SET TERM ^ ; ';
$schema .= sprintf('CREATE TRIGGER "%s_BI" FOR "%s" ', $table_name, $table_name);
$schema .= 'ACTIVE BEFORE INSERT POSITION 0 ';
$schema .= sprintf('AS BEGIN IF (NEW."%s" IS NULL) THEN ', $increment);
$schema .= sprintf('NEW."%s" = GEN_ID("GEN_%s_ID",1);', $increment, $table_name);
$schema .= 'END^ SET TERM ; ^';
$output = $this->_query($schema);
if(!$output) return false;
*/
}
}
지금 소수 파일이 이건데요
스키마에 대해 설명이나 하는법좀 알려주세요
댓글 0
글쓴이 | 제목 | 최종 글 |
---|---|---|
XE | 공지 글 쓰기,삭제 운영방식 변경 공지 [16] | 2019.03.05 by 남기남 |
허브소년 | 로그인 문제 xe_session. [1] | 2008.12.27 by 백성찬 |
Jiyoung540 | 현재위치 공백 없애려면... [2] | 2008.12.27 by Jiyoung540 |
roalroalroal | xe 1.0.6 사용자입니다. [9] | 2008.12.27 by 백성찬 |
simlogo | 홈페이지에 게시판 넣는 법좀 알려주세요 [4] | 2008.12.27 by simlogo |
chris | 파일첨부가 왜안될까요? 부탁드립니다. [2] | 2008.12.27 by chris |
엔듀 | 홈페이지 초보인데.... [3] | 2008.12.27 by 현원 |
wis | 제로보드4 사용자입니다.. | |
[武]적토마 | 게시판관련 질문있어요. ^^ [2] | 2008.12.27 by [武]적토마 |
1004v |
파일첨부 안되시는 분 보세요~~~
[8]
![]() | 2008.12.27 by U-Nus |
영달이 | 1.1.3버전으로 업그래이드 시... [2] | 2008.12.27 by 영달이 |
김지한438 |
zeroboard.com의 메인화면에 최근게시글 위젯 말이죠.
[2]
![]() | 2008.12.27 by asgasg |
구구다스 | 익스프레스 엔진 쓰는데 권한설정이. | |
권석영314 | 회원 가입폼에서 소속그룹을 정할 수 있는 방법이 없을까요?? [4] | 2009.06.01 by 焼酎 |
김영후924 | 메인페이지를 어떻게 설정하죠?? [3] | 2008.12.27 by 김영후924 |
fly0204 | 기본모듈 | |
할배/정한교 |
왼쪽메뉴아래 부분을 권한에 따라 보이기
[1]
![]() | 2008.12.27 by 애치티 |
영달이 |
권한설정 및 파일 올리기...
![]() | |
김홍식 | (급합니다..) 게시판 수정을 했더니.. [1] | 2009.06.01 by 検索エンジン最適化 |
BY JIN | 스크롤바... | |
모자클럽 | 게시판 읽기권한 변경? |