السلام عليكم ورحمة الله وبركاته ،
كنت أبحث في النت عن كيفية استخراج قائمة الجداول الموجودة في قاعدة بيانات الخاصة بي من نوع Interbase ،
فوجدت هذه التعليمات (استعلامات SQL ) و تنطبق أيضا على ال Firebird.
أضعها هنا للفائدة :
1- قائمة الجدوال Tables :
2- قائمة الفيوز ViEWS :
3- قائمة المستخدمين USERS :
4- قائمة INDICES:
5- أسماء الحقول FIELDS لجدول معين :
6- تفلصيل أكثر عن الحقول لجدول معين :
7- قائمة المولدات GENERATOR :
8- قائمة TRIGGERS:
9- قائمة TRIGGERS خاصة بجدول معين :
10-قائمة الدوال UDF المستخدمة :
11- قائمة الإجراءات المخزنة Stored Procedures :
12- استخراج معلومات أكثر عن TRIGGER معين وليكن مثلا MYTRIGGER :
13- معلومات أكثر عن VIEW معين و ليكن مثلا MYVIEW :
14- وفي إصدار Firebird 2.1 فما فوق ، يمكن استخراج المعلومات التالية (لم أجرب هذه التعليمة) :
هذا ما تم جمعه ،
أرجو أن أكون قد وفقت لاختيار هذا الموضوع.
نفع الله به.
بالتوفيق للجميع.
كنت أبحث في النت عن كيفية استخراج قائمة الجداول الموجودة في قاعدة بيانات الخاصة بي من نوع Interbase ،
فوجدت هذه التعليمات (استعلامات SQL ) و تنطبق أيضا على ال Firebird.
أضعها هنا للفائدة :
1- قائمة الجدوال Tables :
كود :
SELECT DISTINCT RDB$RELATION_NAME
FROM RDB$RELATION_FIELDS
WHERE RDB$SYSTEM_FLAG=0;
-- or
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG=0;
2- قائمة الفيوز ViEWS :
كود :
SELECT DISTINCT RDB$VIEW_NAME
FROM RDB$VIEW_RELATIONS;
-- show only the VIEWs referencing a given table
-- إظهار الفيوز الخاص بجدول معين و ليكن TEST
SELECT DISTINCT RDB$VIEW_NAME
FROM RDB$VIEW_RELATIONS
WHERE RDB$RELATION_NAME='TEST';
3- قائمة المستخدمين USERS :
كود :
SELECT DISTINCT RDB$USER
FROM RDB$USER_PRIVILEGES;
4- قائمة INDICES:
كود :
-- خاصة بالجدول TEST2
SELECT RDB$INDEX_NAME
FROM RDB$INDICES
WHERE RDB$RELATION_NAME='TEST2'
5- أسماء الحقول FIELDS لجدول معين :
كود :
SELECT RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME='TEST2';
6- تفلصيل أكثر عن الحقول لجدول معين :
كود :
SELECT r.RDB$FIELD_NAME AS field_name,
r.RDB$DESCRIPTION AS field_description,
r.RDB$DEFAULT_VALUE AS field_default_value,
r.RDB$NULL_FLAG AS field_not_null_constraint,
f.RDB$FIELD_LENGTH AS field_length,
f.RDB$FIELD_PRECISION AS field_precision,
f.RDB$FIELD_SCALE AS field_scale,
CASE f.RDB$FIELD_TYPE
WHEN 261 THEN 'BLOB'
WHEN 14 THEN 'CHAR'
WHEN 40 THEN 'CSTRING'
WHEN 11 THEN 'D_FLOAT'
WHEN 27 THEN 'DOUBLE'
WHEN 10 THEN 'FLOAT'
WHEN 16 THEN 'INT64'
WHEN 8 THEN 'INTEGER'
WHEN 9 THEN 'QUAD'
WHEN 7 THEN 'SMALLINT'
WHEN 12 THEN 'DATE'
WHEN 13 THEN 'TIME'
WHEN 35 THEN 'TIMESTAMP'
WHEN 37 THEN 'VARCHAR'
ELSE 'UNKNOWN'
END AS field_type,
f.RDB$FIELD_SUB_TYPE AS field_subtype,
coll.RDB$COLLATION_NAME AS field_collation,
cset.RDB$CHARACTER_SET_NAME AS field_charset
FROM RDB$RELATION_FIELDS r
LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
WHERE r.RDB$RELATION_NAME='TEST2' -- table name
ORDER BY r.RDB$FIELD_POSITION;
7- قائمة المولدات GENERATOR :
كود :
SELECT RDB$GENERATOR_NAME
FROM RDB$GENERATORS
WHERE RDB$SYSTEM_FLAG=0;
8- قائمة TRIGGERS:
كود :
SELECT * FROM RDB$TRIGGERS
WHERE RDB$SYSTEM_FLAG=0;
9- قائمة TRIGGERS خاصة بجدول معين :
كود :
SELECT * FROM RDB$TRIGGERS
WHERE RDB$SYSTEM_FLAG = 0
AND RDB$RELATION_NAME='TEST2';
10-قائمة الدوال UDF المستخدمة :
كود :
SELECT * FROM RDB$FUNCTIONS
WHERE RDB$SYSTEM_FLAG=0;
11- قائمة الإجراءات المخزنة Stored Procedures :
كود :
SELECT * FROM RDB$PROCEDURES;
12- استخراج معلومات أكثر عن TRIGGER معين وليكن مثلا MYTRIGGER :
كود :
SELECT RDB$TRIGGER_NAME AS trigger_name,
RDB$RELATION_NAME AS table_name,
RDB$TRIGGER_SOURCE AS trigger_body,
CASE RDB$TRIGGER_TYPE
WHEN 1 THEN 'BEFORE'
WHEN 2 THEN 'AFTER'
WHEN 3 THEN 'BEFORE'
WHEN 4 THEN 'AFTER'
WHEN 5 THEN 'BEFORE'
WHEN 6 THEN 'AFTER'
END AS trigger_type,
CASE RDB$TRIGGER_TYPE
WHEN 1 THEN 'INSERT'
WHEN 2 THEN 'INSERT'
WHEN 3 THEN 'UPDATE'
WHEN 4 THEN 'UPDATE'
WHEN 5 THEN 'DELETE'
WHEN 6 THEN 'DELETE'
END AS trigger_event,
CASE RDB$TRIGGER_INACTIVE
WHEN 1 THEN 0 ELSE 1
END AS trigger_enabled,
RDB$DESCRIPTION AS trigger_comment
FROM RDB$TRIGGERS
WHERE UPPER(RDB$TRIGGER_NAME)='MYTRIGGER'
13- معلومات أكثر عن VIEW معين و ليكن مثلا MYVIEW :
كود :
SELECT d.RDB$DEPENDENT_NAME AS view_name,
r.RDB$FIELD_NAME AS field_name,
d.RDB$DEPENDED_ON_NAME AS depended_on_table,
d.RDB$FIELD_NAME AS depended_on_field
FROM RDB$DEPENDENCIES d
LEFT JOIN RDB$RELATION_FIELDS r ON d.RDB$DEPENDENT_NAME = r.RDB$RELATION_NAME
AND d.RDB$FIELD_NAME = r.RDB$BASE_FIELD
WHERE UPPER(d.RDB$DEPENDENT_NAME)='MYVIEW'
AND r.RDB$SYSTEM_FLAG = 0
AND d.RDB$DEPENDENT_TYPE = 1
ORDER BY r.RDB$FIELD_POSITION
14- وفي إصدار Firebird 2.1 فما فوق ، يمكن استخراج المعلومات التالية (لم أجرب هذه التعليمة) :
كود :
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') AS engine_version,
RDB$GET_CONTEXT('SYSTEM', 'NETWORK_PROTOCOL') AS protocol,
RDB$GET_CONTEXT('SYSTEM', 'CLIENT_ADDRESS') AS address
FROM RDB$DATABASE;
هذا ما تم جمعه ،
أرجو أن أكون قد وفقت لاختيار هذا الموضوع.
نفع الله به.
بالتوفيق للجميع.
اللهم اجعلني من أهل القرآن ، الذين هم أهلك و خاصتك.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.
تذكر بأن الوقت الذي تلهو فيه ، غيرك يبني مجده فيه.