يمكن الحصول على قائمة بجميع التسلسلات المنشأة في قاعدة البيانات والجداول والأعمدة التي تم تطبيق التسلسل عليها باستخدام استعلام واحد في 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
.
هذا الاستعلام يمكن أن يوفر لك القائمة التي تبحث عنها، وهي قائمة بجميع التسلسلات والجداول والأعمدة التي تم تطبيق التسلسل عليها في قاعدة البيانات الخاصة بك.
المزيد من المعلومات
بالتأكيد، يمكننا توسيع الاستعلام لنضيف المزيد من المعلومات حول التسلسلات والجداول والأعمدة. يمكننا على سبيل المثال إضافة المزيد من المعلومات حول نوع التسلسل والقيم الحالية والقيم البدئية، وذلك باستخدام معلومات من كائنات البيانات 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;
هذا الاستعلام يضيف مزيدًا من المعلومات حول نوع التسلسل، والقيم الحالية والقيم البدئية، والقيم الدورية، وأخر قيمة تم إنشاؤها.