هل تتغير نتائج View عند تعديل الجدول الأساسي؟

متوسطقراءة دقيقةآخر تحديث 3 أكتوبر 2026

SQL قواعد البيانات

الإجابة

تعتمد نتائج العرض العادي على استعلامه وعلى البيانات المرئية وقت القراءة. إذا عدلت صفًا في الجدول الأساسي فأصبح يحقق شرط العرض، يمكن أن يظهر عند الاستعلام التالي. وإذا توقف الصف عن تحقيق الشرط، يختفي من نتائج العرض دون أن يعني ذلك حذفه من الجدول.

لفهم هذا السلوك، افصل بين تعريف العرض ونتيجته. التعريف ثابت ما لم تعدله، لكن الصفوف المطابقة قد تتغير مع البيانات. في جلسة تعمل بالإعدادات الافتراضية دون معاملة صريحة ممتدة، تظهر التعديلات المنفذة في المثال عند الاستعلام التالي. أما عند دراسة جلسات متزامنة، فيجب أيضًا مراعاة مستوى العزل واللقطة التي تستخدمها القراءة.

مثال

CREATE TABLE tasks (
  id INT PRIMARY KEY,
  status VARCHAR(20)
);
INSERT INTO tasks VALUES (1, 'open'), (2, 'done');
CREATE VIEW open_tasks AS
SELECT id FROM tasks WHERE status = 'open';
UPDATE tasks SET status = 'done' WHERE id = 1;
SELECT id FROM open_tasks;

لا يحتاج المثال إلى إعادة إنشاء العرض بعد التحديث. اختفاء الصف من النتيجة سببه أن حالته الجديدة لا تطابق الشرط، وليس وجود عملية حذف مخفية أو نسخة قديمة يجب تحديثها يدويًا.

باختصار: تبقى صيغة العرض محفوظة، لكن عضوية الصفوف في نتيجته تتغير عندما تتغير البيانات المرئية له.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر فهمك

أي معرفات يعيدها الاستعلام الأخير، مرتبة كما في الكود؟

CREATE TABLE tasks (
  id INT PRIMARY KEY,
  status VARCHAR(20)
);
INSERT INTO tasks VALUES
  (1, 'open'), (2, 'done'), (3, 'open');
CREATE VIEW open_tasks AS
SELECT id FROM tasks WHERE status = 'open';
UPDATE tasks SET status = 'done' WHERE id = 1;
INSERT INTO tasks VALUES (4, 'open');
SELECT id FROM open_tasks ORDER BY id;