منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : حذف بيان بدون حذف المتشابه فى قاعدة البيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

حذف بيان بدون حذف المتشابه فى قاعدة البيانات

اريد ان احذف بيان من الداتا بيز بدون ان احذف بيان مشابه له المحدد فقط

مرفق البرنامج و لكن امر الحذف يحذف اي بيان مشابه للبيان المحدد للحذف

ارجو التعديل علي البرنامج

دمتم سالمين
شكرا اخي علي الرد
ولكن توجد طريقه اخري بالكود تحذف المحدد فقط
من غير ما اضيف حقل ترقيم تلقائي
ممكن مثال بي SqlServer للطريقه
اخ محمد لماذا لاتريد استخدام حقل من نوع رقم ID
ولا يعني انك استخدمت حقل من نوع رقم ان يكون ترقيم تلقائي
صحيح يمكن ان تحذف سجل بطريقتك السابقة هذه لكن دعني اوضح لك الأمر
لتضح لك الصورة Idea

لاحظ لعبارة sql التالية:
كود :
delete from Table1 where Name ='mohammed'
هذه العبارة تعني قم بحذف اي اسم mohammed
يعني انه لو يوجد 4 سجلات بهذا الاسم سوف يتم حذفها Huh
وهذا خطأ فادح Angry لانك بالتأكيد تريد حذف سجل واحد فقط وليس كل السجلات
حسناً لنفترض انه يحتوي على حقل ID
و لنفترض انني اريد حذف mohammed الذي يمتلك ID رقم 201
سوف يكون شكل العبارة هكذا
كود :
delete from Table1 where ID=201
هذا يعني قم بحذف السجل رقم 201 بدون ان يقوم بحذف اي سجل آخر Cool
لانه لايوجد سجلان بنفس الرقم وهكذا هي العملية
واضف لمعلوماتك ان من القواعد الاساسية في 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