كيفية الحصول على قائمة التسلسلات والجداول في PostgreSQL
يمكن الحصول على قائمة بجميع التسلسلات المنشأة في قاعدة البيانات والجداول والأعمدة التي تم تطبيق التسلسل عليها باستخدام استعلام واحد في PostgreSQL، عبر استعلام الجداول المعلوماتية. يمكن استخدام الاستعلام التالي:
sqlSELECT
sequence_name,
table_name,
column_name
FROM
information_schema.sequences
JOIN (
SELECT
pg_get_serial_sequence(quote_ident(table_schema) || '.' || quote_ident(table_name), column_name) AS sequence_name,
table_name,
column_name
FROM
information_schema.columns
WHERE
table_schema NOT IN ('pg_catalog', 'information_schema')
AND column_default LIKE 'nextval%'
) AS columns_with_sequences
USING (sequence_name);
هذا الاستعلام يقوم بالتحقق من information_schema.sequences
للحصول على قائمة التسلسلات، ثم يستخدم pg_get_serial_sequence
للعثور على التسلسلات المرتبطة بأعمدة محددة في الجداول (information_schema.columns
). يتم تجميع البيانات من الجدولين information_schema.sequences
و information_schema.columns
باستخدام JOIN
، ويتم تصفية البيانات للاستبعاد قواعد البيانات المدمجة وقاعدة بيانات information_schema
.
-
استخدام Bootstrap لتقسيم الصفوف24/03/2024
-
حل مشكلة مقارنة التواريخ في Pandas بسهولة29/01/2024
هذا الاستعلام يمكن أن يوفر لك القائمة التي تبحث عنها، وهي قائمة بجميع التسلسلات والجداول والأعمدة التي تم تطبيق التسلسل عليها في قاعدة البيانات الخاصة بك.
المزيد من المعلومات
بالتأكيد، يمكننا توسيع الاستعلام لنضيف المزيد من المعلومات حول التسلسلات والجداول والأعمدة. يمكننا على سبيل المثال إضافة المزيد من المعلومات حول نوع التسلسل والقيم الحالية والقيم البدئية، وذلك باستخدام معلومات من كائنات البيانات pg_sequences
و pg_class
:
sqlSELECT
s.sequence_name,
c.table_name,
c.column_name,
format_type(s.data_type, s.numeric_precision, s.numeric_scale) AS data_type,
s.start_value,
s.minimum_value,
s.maximum_value,
s.increment,
s.cycle_option,
s.last_value
FROM
information_schema.sequences s
JOIN (
SELECT
pg_get_serial_sequence(quote_ident(table_schema) || '.' || quote_ident(table_name), column_name) AS sequence_name,
table_name,
column_name
FROM
information_schema.columns
WHERE
table_schema NOT IN ('pg_catalog', 'information_schema')
AND column_default LIKE 'nextval%'
) c USING (sequence_name)
JOIN pg_class p ON s.sequence_name = p.relname;
هذا الاستعلام يضيف مزيدًا من المعلومات حول نوع التسلسل، والقيم الحالية والقيم البدئية، والقيم الدورية، وأخر قيمة تم إنشاؤها.