تستعمل العبارة DELETE لحذف البيانات في جدول .
تستعمل الجملة WHERE لتعيين الصفوف التي يجب حذفها.
مثال بسيط لحذف البيانات
أولا نقوم بتعيين الشهادة التي نريد حذفها:
sqlite>SELECT * FROM ATTESTATIONS;
وهي كما يلي:
AttestationId | AtesstationLibelle | EtablissementDate | EmployerId |
--------- | ---------------------- | --------- | --------- |
1 | ATTESTATION DE TRAVAIL | 05/08/2016 | 1 |
2 | ATTESTATION DE TRAVAIL | 06/08/2016 | 4 |
3 | ATTESTATION DE TRAVAIL | 05/08/2016 | 9 |
4 | ATTESTATION DE TRAVAIL | 05/08/2016 | 8 |
5 | TITRE DE CONGE | 05/08/2016 | 7 |
6 | ATTESTATION DE TRAVAIL | 06/08/2016 | 3 |
نقوم بحذف الشهادة رقم 4 كما يلي
DELETE from ATTESTATIONS where attestationId=4;
فنلاحظ النتيجة كما يلي:
AttestationId | AtesstationLibelle | EtablissementDate | EmployerId |
--------- | ---------------------- | --------- | --------- |
1 | ATTESTATION DE TRAVAIL | 05/08/2016 | 1 |
2 | ATTESTATION DE TRAVAIL | 06/08/2016 | 4 |
3 | ATTESTATION DE TRAVAIL | 05/08/2016 | 9 |
5 | TITRE DE CONGE | 05/08/2016 | 7 |
6 | ATTESTATION DE TRAVAIL | 06/08/2016 | 3 |
حذف البيانات في وجود عائق المفتاح الخارجي:
إذا أردنا حذف سجل له علاقة بمفتاح خارجي ، سوف تواجهنا رسالة خطأ . سنحتاج حينها إلى حذف سجلات هذا المفتاح أولا قبل حذف سجل المفتاح الأساسي.
فمثلا العامل رقم 9 من جدول العمال مرتبط بالشهادة رقم 3 من جدول الشهادات
sqlite>SELECT * from attestations where employerID=9
AttestationId | AtesstationLibelle | EtablissementDate | EmployerId |
--------- | ---------------------- | --------- | --------- |
3 | ATTESTATION DE TRAVAIL | 05/08/2016 | 9 |
فإذا أردنا حذف هذا العامل فإننا سنواجه رسالة الخطأ :
وهذه عبارة DELETE
DELETE FROM Employers WHERE EmployerID= 3;
وهذه نتيجة هذا الأمر :
sqlite > DELETE FROM Employers ..> WHERE EmployerId = 3; Error: FOREIGN KEY constraint failed sqlite>
لذلك ، فإننا نحتاج إلى حذف سجلات المفتاح الخارجي في جدول الشهادات قبل حذف سجل المفتاح الأساسي في سجل العمال
إذا لم نشاهد خطأ المفتاح الخارجي، في هذه الحالة ربما نحتاج إلى تفعيل اختبار عائق المفتاح الخارجي وذلك بتنفيذ الأمر التالي : .
PRAGMA foreign_keys = ON;
حذف السجلات المتعلقة
نقوم بحذف السجل من جدول الشهادات والمتعلق بالعامل الذي نريد حذف سجله
DELETE FROM ATTESTATIONS WHERE EmployerID= 3;
نتأكذ الآن أنه لا يوجد عامل يحمل رقم 3 له شهادة مسجلة بجدول الشهادات
sqlite> SELECT * FROM ATTESTATIONS WHERE EmployerID= 3; sqlite> (No results).
الآن نقوم بحذف العامل رقم 3
DELETE FROM EMPLOYERS WHERE EmployerID= 3;
في هذه الحالة لا نلاحظ أي خطأ
نقوم الآن باستعمال العبارة SELECT للتأكذ أن السجل تم حذفه
sqlite>SELECT * FROM EMPLOYERS WHERE EmployerID= 3; sqlite> No results.
حذف جميع السجلات:
يمكن حذف جميع السجلات في جدول الشهادات وذلك بتجاهل الجملة WHERE
قبل الحذف يمكن حفظ نسخة من الجدول في جدول آخر باستعمال العبارة SELECT كما رأينا
DELETE FROM ATTESTATIONS;
نتأكذ الآن بأن عملية الحذف تمت بنجاح:
sqlite> SELECT * FROM ATTESTATIONS sqlite> (No results).
ليست هناك تعليقات:
إرسال تعليق