برنامح SQLite - حذف البيانات

تستعمل العبارة DELETE لحذف البيانات في جدول .
تستعمل الجملة WHERE لتعيين الصفوف التي يجب حذفها.
يمكن حذف كل الصفوف ، بعض الصفوف أو صف واحد فقط ، وذلك حسب شروط التصفية المطبقة من طرف الجملة
WHERE

مثال بسيط لحذف البيانات

أولا نقوم بتعيين الشهادة التي نريد حذفها:
sqlite>SELECT * FROM ATTESTATIONS;
وهي كما يلي:
 
AttestationIdAtesstationLibelleEtablissementDateEmployerId
-------------------------------------------------
1ATTESTATION DE TRAVAIL05/08/20161
2ATTESTATION DE TRAVAIL06/08/20164
3ATTESTATION DE TRAVAIL05/08/20169
4ATTESTATION DE TRAVAIL05/08/20168
5TITRE DE CONGE05/08/20167
6ATTESTATION DE TRAVAIL06/08/20163
نقوم بحذف الشهادة رقم 4 كما يلي
DELETE  from ATTESTATIONS where  attestationId=4;
فنلاحظ النتيجة كما يلي:
AttestationIdAtesstationLibelleEtablissementDateEmployerId
-------------------------------------------------
1ATTESTATION DE TRAVAIL05/08/20161
2ATTESTATION DE TRAVAIL06/08/20164
3ATTESTATION DE TRAVAIL05/08/20169
5TITRE DE CONGE05/08/20167
6ATTESTATION DE TRAVAIL06/08/20163

حذف البيانات في وجود عائق المفتاح الخارجي:

إذا أردنا حذف سجل له علاقة بمفتاح خارجي ، سوف تواجهنا رسالة خطأ . سنحتاج حينها إلى حذف سجلات هذا المفتاح أولا قبل حذف سجل المفتاح الأساسي.
فمثلا العامل رقم 9 من جدول العمال مرتبط بالشهادة رقم 3 من جدول الشهادات
sqlite>SELECT *  from attestations where employerID=9
AttestationIdAtesstationLibelleEtablissementDateEmployerId
-------------------------------------------------
3ATTESTATION DE TRAVAIL05/08/20169
فإذا أردنا حذف هذا العامل فإننا سنواجه رسالة الخطأ :
وهذه عبارة 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).

ليست هناك تعليقات:

إرسال تعليق

المشاركات الشائعة