السلام عليكم
حذف بيان بدون حذف المتشابه فى قاعدة البيانات
اريد ان احذف بيان من الداتا بيز بدون ان احذف بيان مشابه له المحدد فقط
مرفق البرنامج و لكن امر الحذف يحذف اي بيان مشابه للبيان المحدد للحذف
ارجو التعديل علي البرنامج
دمتم سالمين
شكرا اخي علي الرد
ولكن توجد طريقه اخري بالكود تحذف المحدد فقط
من غير ما اضيف حقل ترقيم تلقائي
ممكن مثال بي SqlServer للطريقه
اخ محمد لماذا لاتريد استخدام حقل من نوع رقم ID
ولا يعني انك استخدمت حقل من نوع رقم ان يكون ترقيم تلقائي
صحيح يمكن ان تحذف سجل بطريقتك السابقة هذه لكن دعني اوضح لك الأمر
لتضح لك الصورة
لاحظ لعبارة sql التالية:
كود :
delete from Table1 where Name ='mohammed'
هذه العبارة تعني قم بحذف اي اسم mohammed
يعني انه لو يوجد 4 سجلات بهذا الاسم سوف يتم حذفها
وهذا خطأ فادح

لانك بالتأكيد تريد حذف سجل واحد فقط وليس كل السجلات
حسناً لنفترض انه يحتوي على حقل ID
و لنفترض انني اريد حذف mohammed الذي يمتلك ID رقم 201
سوف يكون شكل العبارة هكذا
كود :
delete from Table1 where ID=201
هذا يعني قم بحذف السجل رقم 201 بدون ان يقوم بحذف اي سجل آخر
لانه لايوجد سجلان بنفس الرقم وهكذا هي العملية
واضف لمعلوماتك ان من القواعد الاساسية في Normaliztion لقواعد البيانات
باختلاف انواعها، يجب ان يحتوي كل سجل على مفتاح اساسي
وطبعا من خواصه ان يكون فريد ولا يتكرر وهذا ينطبق على المفتاح الاساسي
لذلك اخي صمم برامجك بطريقة علمية حتى لو كانت امثلةبسيطة تقوم بها لتعليم نفسك
اني استخدم اوركل 10 g ولتوضيح الامر استخدمت قواعد بيانات Access
ولم اجد طريقه في اوركل لانشاء رقم تلقائى
والجدول المقصود جدول المبيعات و اكيد توجد اصناف متشابه في فاتوره واحده
واذا ارجاع صنف واحد من الفاتورة اكيد سالغيه من الفاتورة لخصمه من جدول
المبيعات وهنا اقف مع المشكله
تعبت جدا في البحث عن الرقم التقائى في الاوركل 10 g
الموضوع بسيط ليس من الضروري ان يكون ترقيم تلقائي
لماذا لا يحصل كل صنف على ID
و اكيد حقل ID عبارة عن رقم
و بالمناسبة انا من بحري يمكن ان تتصل على هاتفياً و اخبرك بالطريقة او يمكنك مراسلتي على الخاص
الحمد لله تم حل المشكله بانشاء ID ترقيم تلقائي بال Oracle 10g
الحل
SQL> CREATE TABLE test (
id NUMBER PRIMARY KEY,
val VARCHAR2(30)
);
CREATE SEQUENCE test_id_seq;
INSERT INTO test(id, val) VALUES (test_id_seq.nextval, 'row1');
Now, let's automate this using a trigger to simulate AutoNumber/Identity functionality:
SQL> CREATE OR REPLACE TRIGGER test_trg
BEFORE INSERT ON test
FOR EACH ROW
BEGIN
SELECT test_id_seq.nextval INTO :new.id FROM dual;
END;
/
Trigger created.
SQL> SHOW ERRORS
No errors.
SQL> INSERT INTO test(val) VALUES ('row2');
1 row created.
SQL> INSERT INTO test(id, val) VALUES (null, 'row3');
1 row created.
SQL> SELECT * FROM test;
ID VAL
---------- ------------------------------
1 row1
2 row2
3 row3