cubrid_schema 함수는 데이터베이스의 원하는 스키마 정보를 얻어온다. 만약 특정 클래스와 관련된 정보를 얻기 위해서는 class_name, 특정 속성과 관련된 정보(현재 CUBRID_SCH_ATTR_PRIVILEGE에서만 사용)를 얻기 위해서는 attr_name을 지정해야 한다.
array cubrid_schema (resource $conn_identifier, int $schema_type[, string $class_name[, string $attr_name]])
cubrid_schema의 결과는 2차원 배열형( 열(연관배열) * 행(수치배열) )으로 반환되며, 스키마의 종류와 각 스키마의 종류에 따라 반환되는 결과 배열의 열 구성은 다음과 같다.
스키마 |
컬럼 번호 |
컬럼 이름 |
값 |
---|---|---|---|
CUBRID_SCH_CLASS |
1 |
NAME |
0 : System class |
2 |
TYPE |
|
|
CUBRID_SCH_VCLASS |
1 |
NAME |
1 : vclass |
2 |
TYPE |
|
|
CUBRID_SCH_QUERY_SPEC |
1 |
QUERY_SPEC |
|
CUBRID_SCH_ATTRIBUTE |
1 |
ATTR_NAME |
|
2 |
DOMAIN |
|
|
3 |
SCALE |
|
|
4 |
PRECISION |
|
|
5 |
INDEXED |
1 : indexed |
|
6 |
NON NULL |
1 : non null |
|
7 |
SHARED |
1 : shared |
|
8 |
UNIQUE |
1 : unique |
|
9 |
DEFAULT |
|
|
10 |
ATTR_ORDER |
1 : base |
|
11 |
CLASS_NAME |
|
|
12 |
SOURCE_CLASS |
|
|
CUBRID_SCH_CLASS_ATTRIBUTE |
1 |
ATTR_NAME |
|
2 |
DOMAIN |
|
|
3 |
SCALE |
|
|
4 |
PRECISION |
|
|
5 |
INDEXED |
1 : indexed |
|
6 |
NON NULL |
1 : non null |
|
7 |
SHARED |
1 : shared |
|
8 |
UNIQUE |
1 : unique |
|
9 |
DEFAULT |
|
|
10 |
ATTR_ORDER |
1 : base |
|
11 |
CLASS_NAME |
|
|
12 |
SOURCE_CLASS |
|
|
CUBRID_SCH_METHOD |
1 |
NAME |
|
2 |
RET_DOMAIN |
|
|
3 |
ARG_DOMAIN |
|
|
CUBRID_SCH_METHOD_FILE |
1 |
METHOD_FILE |
|
CUBRID_SCH_SUPERCLASS |
1 |
CLASS_NAME |
|
2 |
TYPE |
|
|
CUBRID_SCH_SUBCLASS |
1 |
CLASS_NAME |
|
2 |
TYPE |
|
|
CUBRID_SCH_CONSTRAINT |
1 |
TYPE |
0 : unique |
2 |
NAME |
|
|
3 |
ATTR_NAME |
|
|
CUBRID_SCH_TRIGGER |
1 |
NAME |
|
2 |
STATUS |
|
|
3 |
EVENT |
|
|
4 |
TARGET_CLASS |
|
|
5 |
TARGET_ATTR |
|
|
6 |
ACTION_TIME |
|
|
7 |
ACTION |
|
|
8 |
PRIORITY |
|
|
9 |
CONDITION_TIME |
|
|
10 |
CONDITION |
|
|
CUBRID_SCH_CLASS_PRIVILEGE |
1 |
CLASS_NAME |
|
2 |
PREVILEGE |
|
|
3 |
GRANTABLE |
|
|
CUBRID_SCH_ATTR_PRIVILEGE |
1 |
ATTR_NAME |
|
2 |
PREVILEGE |
|
|
3 |
GRANTABLE |
|
|
CUBRID_SCH_PRIMARY_KEY |
1 |
ATTR_NAME |
|
2 |
KEY_SEQ |
1 : base |
|
3 |
KEY_NAME |
|
|
4 |
KEY_NAME |
|
|
CUBRID_SCH_IMPORTED_KEYS |
1 |
PKTABLE_NAME |
|
2 |
PKCOLUMN_NAME |
|
|
3 |
FKTABLE_NAME |
|
|
4 |
FKCOLUMN_NAME |
|
|
5 |
KEY_SEQ |
|
|
6 |
UPDATE_ACTION |
0 : cascade |
|
7 |
DELETE_ACTION |
0 : cascade |
|
8 |
FK_NAME |
|
|
9 |
PK_NAME |
|
|
CUBRID_SCH_EXPORTED_KEYS |
1 |
PKTABLE_NAME |
|
2 |
PKCOLUMN_NAME |
|
|
3 |
FKTABLE_NAME |
|
|
4 |
FKCOLUMN_NAME |
|
|
5 |
KEY_SEQ |
|
|
6 |
UPDATE_ACTION |
0 : cascade |
|
7 |
DELETE_ACTION |
0 : cascade |
|
8 |
FK_NAME |
|
|
9 |
PK_NAME |
|
|
CUBRID_SCH_CROSS_REFERENCE |
1 |
PKTABLE_NAME |
|
2 |
PKCOLUMN_NAME |
|
|
3 |
FKTABLE_NAME |
|
|
4 |
FKCOLUMN_NAME |
|
|
5 |
KEY_SEQ |
|
|
6 |
UPDATE_ACTION |
0 : cascade |
|
7 |
DELETE_ACTION |
0 : cascade |
|
8 |
FK_NAME |
|
|
9 |
PK_NAME |
|
<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
printf("\n--- Primary Key ---\n");
$pk = cubrid_schema($conn, CUBRID_SCH_PRIMARY_KEY, "game");
var_dump($pk);
printf("\n--- Foreign Keys ---\n");
$fk = cubrid_schema($conn, CUBRID_SCH_IMPORTED_KEYS, "game");
var_dump($fk);
printf("\n--- Column Attribute ---\n");
$attr = cubrid_schema($conn, CUBRID_SCH_ATTRIBUTE, "stadium", "area");
var_dump($attr);
cubrid_disconnect($conn);
?>
The above example will output:
--- Primary Key ---
array(3) {
[0]=>
array(4) {
["CLASS_NAME"]=>
string(4) "game"
["ATTR_NAME"]=>
string(12) "athlete_code"
["KEY_SEQ"]=>
string(1) "3"
["KEY_NAME"]=>
string(41) "pk_game_host_year_event_code_athlete_code"
}
[1]=>
array(4) {
["CLASS_NAME"]=>
string(4) "game"
["ATTR_NAME"]=>
string(10) "event_code"
["KEY_SEQ"]=>
string(1) "2"
["KEY_NAME"]=>
string(41) "pk_game_host_year_event_code_athlete_code"
}
[2]=>
array(4) {
["CLASS_NAME"]=>
string(4) "game"
["ATTR_NAME"]=>
string(9) "host_year"
["KEY_SEQ"]=>
string(1) "1"
["KEY_NAME"]=>
string(41) "pk_game_host_year_event_code_athlete_code"
}
}
--- Foreign Keys ---
array(2) {
[0]=>
array(9) {
["PKTABLE_NAME"]=>
string(7) "athlete"
["PKCOLUMN_NAME"]=>
string(4) "code"
["FKTABLE_NAME"]=>
string(4) "game"
["FKCOLUMN_NAME"]=>
string(12) "athlete_code"
["KEY_SEQ"]=>
string(1) "1"
["UPDATE_RULE"]=>
string(1) "1"
["DELETE_RULE"]=>
string(1) "1"
["FK_NAME"]=>
string(20) "fk_game_athlete_code"
["PK_NAME"]=>
string(15) "pk_athlete_code"
}
[1]=>
array(9) {
["PKTABLE_NAME"]=>
string(5) "event"
["PKCOLUMN_NAME"]=>
string(4) "code"
["FKTABLE_NAME"]=>
string(4) "game"
["FKCOLUMN_NAME"]=>
string(10) "event_code"
["KEY_SEQ"]=>
string(1) "1"
["UPDATE_RULE"]=>
string(1) "1"
["DELETE_RULE"]=>
string(1) "1"
["FK_NAME"]=>
string(18) "fk_game_event_code"
["PK_NAME"]=>
string(13) "pk_event_code"
}
}
--- Column Attribute ---
array(1) {
[0]=>
array(13) {
["ATTR_NAME"]=>
string(4) "area"
["DOMAIN"]=>
string(1) "7"
["SCALE"]=>
string(1) "2"
["PRECISION"]=>
string(2) "10"
["INDEXED"]=>
string(1) "0"
["NON_NULL"]=>
string(1) "0"
["SHARED"]=>
string(1) "0"
["UNIQUE"]=>
string(1) "0"
["DEFAULT"]=>
NULL
["ATTR_ORDER"]=>
string(1) "4"
["CLASS_NAME"]=>
string(7) "stadium"
["SOURCE_CLASS"]=>
string(7) "stadium"
["IS_KEY"]=>
string(1) "0"
}