(PECL CUBRID >= 8.3.0)
cubrid_schema — 获取请求的模式信息
该 cubrid_schema() 函数用于从数据库获取请求的模式信息。要获取有关特定类的信息,请设置 class_name,要获取有关特定属性的信息(只能与 CUBRID_SCH_ATTR_PRIVILEGE 一起使用),请设置 attr_name。
该 cubrid_schema() 函数的结果作为二维数组返回(列(关联数组)* 行(数字数组))。下表显示了模式的类型以及基于模式类型要返回的结果数组的列结构。
| 模式 | 列号 | 列名 | 值 |
|---|---|---|---|
| CUBRID_SCH_CLASS | 1 | NAME | |
| 2 | TYPE | 0:系统类 1:vclass 2:类 | |
| CUBRID_SCH_VCLASS | 1 | NAME | |
| 2 | TYPE | 1:vclass | |
| CUBRID_SCH_QUERY_SPEC | 1 | QUERY_SPEC | |
| CUBRID_SCH_ATTRIBUTE / CUBRID_SCH_CLASS_ATTRIBUTE | 1 | ATTR_NAME | |
| 2 | DOMAIN | ||
| 3 | SCALE | ||
| 4 | PRECISION | ||
| 5 | INDEXED | 1:已索引 | |
| 6 | NOT NULL | 1:非空 | |
| 7 | SHARED | 1:共享 | |
| 8 | UNIQUE | 1:唯一 | |
| 9 | DEFAULT | ||
| 10 | ATTR_ORDER | base:1 | |
| 11 | CLASS_NAME | ||
| 12 | SOURCE_CLASS | ||
| 13 | IS_KEY | 1:键 | |
| CUBRID_SCH_METHOD / CUBRID_SCH_CLASS_METHOD | 1 | NAME | |
| 2 | RET_DOMAIN | ||
| 3 | ARG_DOMAIN | ||
| CUBRID_SCH_METHOD_FILE | 1 | METHOD_FILE | |
| CUBRID_SCH_SUPERCLASS / CUBRID_SCH_DIRECT_SUPER_CLASS / CUBRID_SCH_SUBCLASS | 1 | CLASS_NAME | |
| 2 | TYPE | 0:系统类 1:vclass 2:类 | |
| CUBRID_SCH_CONSTRAINT | 1 | TYPE | 0:唯一 1:索引 2:反向唯一 3:反向索引 |
| 2 | NAME | ||
| 3 | ATTR_NAME | ||
| 4 | NUM_PAGES | ||
| 5 | NUM_KEYS | ||
| 6 | PRIMARY_KEY | 1:主键 | |
| 7 | KEY_ORDER | base:1 | |
| 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 / CUBRID_SCH_ATTR_PRIVILEGE | 1 | CLASS_NAME / ATTR_NAME | |
| 2 | PRIVILEGE | ||
| 3 | GRANTABLE | ||
| CUBRID_SCH_PRIMARY_KEY | 1 | CLASS_NAME | |
| 2 | ATTR_NAME | ||
| 3 | KEY_SEQ | base:1 | |
| 4 | KEY_NAME | ||
| CUBRID_SCH_IMPORTED_KEYS / CUBRID_SCH_EXPORTED_KEYS / CUBRID_SCH_CROSS_REFERENCE | 1 | PKTABLE_NAME | |
| 2 | PKCOLUMN_NAME | ||
| 3 | FKTABLE_NAME | base:1 | |
| 4 | FKCOLUMN_NAME | ||
| 5 | KEY_SEQ | base:1 | |
| 6 | UPDATE_ACTION | 0:级联 1:限制 2:无操作 3:设为空 | |
| 7 | DELETE_ACTION | 0:级联 1:限制 2:无操作 3:设为空 | |
| 8 | FK_NAME | ||
| 9 | PK_NAME |
conn_identifier连接标识符。
schema_type您想知道的模式数据。
class_name您想了解其模式的类。
attr_name您想了解其模式的属性。
包含模式信息的数组,当进程成功时,或 false 失败时。
| 版本 | 描述 |
|---|---|
| 8.3.1 | 更改返回值:当进程不成功时,返回 false,而不是 -1。 |
示例 #1 cubrid_schema() 示例
<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");
printf("\n--- 主键 ---\n");
$pk = cubrid_schema($conn, CUBRID_SCH_PRIMARY_KEY, "game");
var_dump($pk);
printf("\n--- 外键 ---\n");
$fk = cubrid_schema($conn, CUBRID_SCH_IMPORTED_KEYS, "game");
var_dump($fk);
printf("\n--- 列属性 ---\n");
$attr = cubrid_schema($conn, CUBRID_SCH_ATTRIBUTE, "stadium", "area");
var_dump($attr);
cubrid_disconnect($conn);
?>以上示例将输出
--- 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"
}
}