طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 122 · برمجة قواعد البيانات
تقييم الدرس 21

المحفزات: دوال تعمل تلقائيًّا

أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس

أسئلة التقييم

تقييم الدرس 21: المحفزات: دوال تعمل تلقائيًّا. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) نوع إرجاع دالة المحفز في PostgreSQL:
2) ماذا يحدث عند تنفيذ الإدخال؟
query.sql
CREATE FUNCTION f() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN RETURN NULL; END $$;CREATE TRIGGER t BEFORE INSERT ON categories FOR EACH ROW EXECUTE FUNCTION f();INSERT INTO categories (name) VALUES ('رياضة');
3) أي محفز أنسب لسجل تدقيق التعديلات؟
4) في MySQL يُكتب للحدثين INSERT و DELETE:
5) WHEN (OLD.price IS DISTINCT FROM NEW.price) تعني:

2السؤال الثاني: صح أم خطأ

1) المحفز يُستدعى بـ CALL.
الصواب: خطأ
2) محفز BEFORE يستطيع تعديل الصف قبل حفظه.
الصواب: صح
3) OLD متاح في محفز INSERT.
الصواب: خطأ
4) RAISE EXCEPTION في المحفز يلغي العملية التي شغّلته.
الصواب: صح
5) FOR EACH ROW يعني أن المحفز يعمل مرة لكل صف متأثر.
الصواب: صح

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) الصف بعد التغيير في المحفز يُسمّى .
الإجابة: NEW
2) لربط المحفز بالدالة: … FOR EACH ROW f();
الإجابة: EXECUTE FUNCTION
3) نوع العملية التي شغّلت المحفز في المتغير .
الإجابة: TG_OP

4السؤال الرابع: أسئلة عملية

1) كم صفًّا في سجل الأسعار بعد التنفيذ؟

query.sql
CREATE TABLE price_log (  product_id int,  old_price  numeric,  new_price  numeric,  changed_at timestamptz DEFAULT now()); CREATE FUNCTION log_price() RETURNS triggerLANGUAGE plpgsqlAS $$BEGIN  INSERT INTO price_log (product_id, old_price, new_price)  VALUES (OLD.id, OLD.price, NEW.price);  RETURN NEW;END;$$; CREATE TRIGGER trg_price_logAFTER UPDATE OF price ON productsFOR EACH ROWWHEN (OLD.price IS DISTINCT FROM NEW.price)EXECUTE FUNCTION log_price();UPDATE products SET price = price + 1 WHERE category_id IN (1, 3);UPDATE products SET price = price WHERE id = 9;SELECT count(*) FROM price_log;
الناتج الصحيح:
النتيجة · صف واحد
count
5

2) ما ناتج هذا الكود؟

query.sql
CREATE FUNCTION up() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NEW.name := upper(NEW.name); RETURN NEW; END $$;CREATE TRIGGER t BEFORE INSERT ON categories FOR EACH ROW EXECUTE FUNCTION up();INSERT INTO categories (name) VALUES ('sport');SELECT name FROM categories WHERE id = 6;
الناتج الصحيح:
النتيجة · صف واحد
name
SPORT
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس