OOZOU
تواصلوا معنا
العودة إلى TIL
macos

إعادة ضبط تسلسل جدول Postgres بعد عملية DELETE

13 أكتوبر 2020

عند حذف السجلات الأحدث من جدول ما، يمكنكم إعادة ضبط عدّاد التسلسل الخاص به إذا كان تتابع قيم حقل الزيادة التلقائية مهمًا لكم. لنأخذ العمليات التالية على الجدول users:

select max(id) from users;

+-----+ 
| max | 
+-----+ 
| 896 | 
+-----+ 
1 rows in set (0.03 sec)

بعد ذلك، نُجري عملية حذف على أحدث الصفوف:

delete from users where created_at > timestamp 'yesterday';
96 rows in set (0.15 sec) 

ستكون القيمة التالية للزيادة التلقائية للحقل id هي 897 عند الإدراج التالي. استخدموا الأمر التالي لتقليل قيمة التسلسل للجدول users بمقدار 96.

select setval('users_id_seq',(select max(id) from users));

+--------+
| setval |
+--------+
| 800    |
+--------+
1 rows in set (0.04 sec)

لماذا نعيد ضبط التسلسل؟

تصبح إعادة ضبط التسلسل في Postgres ضرورية عندما تريدون إعادة تهيئته بقيمة بداية جديدة، بحيث يُولَّد تسلسل جديد متصل. وغالبًا ما يلزم ذلك عند دمج بيانات من عدة قواعد بيانات، أو تغيير بنية قاعدة البيانات، أو التعافي من تلف البيانات. وبإعادة ضبط التسلسل، تضمنون أن تستمر أعمدة المفتاح الأساسي في توليد أعداد صحيحة فريدة ومتصلة.

فهم تسلسل المفتاح الأساسي

تسلسل المفتاح الأساسي هو كائن في قاعدة البيانات يُستخدم لتوليد قيم صحيحة فريدة لأعمدة المفتاح الأساسي في الجدول. وهو مكوّن أساسي في أنظمة إدارة قواعد البيانات العلائقية، لأنه يضمن أن يكون لكل صف في الجدول معرّف فريد. ويُنشأ تسلسل المفتاح الأساسي عادةً عند إنشاء الجدول، ويُستخدم لتوليد قيم عمود المفتاح الأساسي. وفهم آلية عمله ضروري لإدارة قاعدة بياناتكم بفعالية.

كيفية إعادة ضبط التسلسل

لإعادة ضبط تسلسل في Postgres، يمكنكم استخدام الأمر ALTER SEQUENCE. يتيح لكم هذا الأمر تغيير تعريف مولّد التسلسل، بما في ذلك قيمة البداية ومقدار الزيادة والقيمة القصوى. ولإعادة ضبط التسلسل، عليكم تحديد اسم التسلسل وقيمة البداية الجديدة ومقدار الزيادة. على سبيل المثال، لإعادة ضبط تسلسل باسم my_sequence ليبدأ من 100 بزيادة مقدارها 1، استخدموا الأمر التالي: ALTER SEQUENCE my_sequence RESTART WITH 100 INCREMENT BY 1; ويمكنكم بدلًا من ذلك استخدام الدالة SETVAL لإعادة ضبط التسلسل إلى قيمة محددة. تضبط هذه الدالة القيمة الحالية للتسلسل على القيمة المحددة، ويمكن استخدامها لإعادة ضبط التسلسل إلى قيمة بداية جديدة. على سبيل المثال: SELECT setval('my_sequence', 100);

احتياطات واعتبارات

قبل إعادة ضبط التسلسل، من الضروري اتخاذ احتياطات لتجنب تلف البيانات أو عدم اتساقها. وإليكم بعض الاعتبارات التي ينبغي مراعاتها:

  • تأكدوا من وجود نسخة احتياطية من قاعدة بياناتكم قبل إجراء أي تغييرات على التسلسل.
  • تأكدوا من امتلاككم الصلاحيات اللازمة لتعديل التسلسل.
  • توخّوا الحذر عند إعادة ضبط التسلسل، لأنه قد يؤثر في سلامة بياناتكم.
  • ضعوا في الحسبان أثر إعادة ضبط التسلسل على تطبيقكم ومستخدميكم.

طرق بديلة

إلى جانب استخدام الأمر ALTER SEQUENCE أو الدالة SETVAL، توجد طرق بديلة لإعادة ضبط التسلسل في Postgres. إحداها استخدام الدالة pg_get_serial_sequence لمعرفة اسم التسلسل المرتبط بعمود ما، ثم استخدام الأمر ALTER SEQUENCE لإعادة ضبطه. على سبيل المثال: SELECT pg_get_serial_sequence('my_table', 'id'); ALTER SEQUENCE my_table_id_seq RESTART WITH 100; وطريقة أخرى هي استخدام دالة SQL لترحيل تسلسل المفتاح الأساسي إلى قيمة بداية جديدة. ويفيد ذلك خصوصًا عندما تحتاجون إلى ضمان أن تكون قيم التسلسل متصلة وفريدة عبر عدة جداول أو قواعد بيانات.

المزيد حول macos

macos20 أغسطس 2021

أضيفوا ظلًا بأسلوب macOS إلى لقطات الشاشة "الجزئية" أو الصور ذات الحواف البسيطة

افتراضيًا، وسواء أحببتم ذلك أم لا، تضيف اختصارات macOS لالتقاط شاشة التطبيق كاملة (⇧- ⌘- 5) ظلًا خفيفًا حول الصورة المحفوظة. وقد يجعلها ذلك أجمل بصريًا عند…

macos7 نوفمبر 2020

تحويل SVG إلى PNG

على macOS، ثبّتوا inkscape (باستخدام brew) واستخدموه على النحو التالي:

macos13 أكتوبر 2020

أضيفوا فواصل إلى شريط Dock في macOS لتجميع التطبيقات

افتحوا الطرفية (أو ما يعادلها) والصقوا الأمر التالي المكوّن من سطر واحد:

هل لديكم فكرة مشروع؟

يسعدنا أن نتعرّف على ما تبنونه.

ابدأوا المحادثةhello@oozou.com
OOZOU Logo

بانكوك · سنغافورة · هونغ كونغ

X
Facebook
Instagram
LinkedIn
OOZOU Co., Ltd.
548 One City Centre
Ploenchit Road
Bangkok 10330
Thailand
+66 2544 0000
hello@oozou.com

الخدمات

  • تطوير الويب
  • وكلاء الذكاء الاصطناعي والذكاء الاصطناعي التوليدي
  • تطوير تطبيقات الجوال
  • تحليلات البيانات وهندستها
  • تصميم تجربة المستخدم وواجهته (UX/UI) وتصميم المنتجات
  • التحوّل الرقمي

الشركة

  • من نحن
  • الوظائف
  • المدونة
  • دراسات الحالة
  • عروض حية
  • تعلّمت اليوم
  • تواصل معنا

المزيد

  • القطاعات
  • شبكة الشركاء
© 2026 OOZOU. جميع الحقوق محفوظة.
سياسة الخصوصيةمدونة قواعد السلوكسياسة مكافحة الرشوة والفساد