---
title: "إعادة ضبط تسلسل جدول Postgres بعد عملية DELETE"
description: "عند حذف السجلات الأحدث من جدول ما، يمكنكم إعادة ضبط عدّاد التسلسل الخاص به إذا كان تتابع قيم حقل الزيادة التلقائية مهمًا لكم. لنأخذ العمليات التالية على الجدول users:"
canonical: https://oozou.com/til/reset-postgres-table-sequence-after-delete-66
locale: ar
date: 2020-10-13
topic: macos
---

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

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

Published: 2020-10-13 · Topic: [macos](https://oozou.com/ar/til-topics/macos) ([markdown](https://oozou.com/ar/til-topics/macos.md))

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

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/ar/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
