Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

كيفية استخدام الأمر EXCHANGE للتبديل بين الجداول

السؤال

كيف أستخدم الأمر EXCHANGE لتبديل اسمي جدولين؟

الإجابة

يكون الأمر EXCHANGE مفيدًا عندما تحتاج إلى استبدال جدول حالي بجدول مؤقت آخر، بعد تحديث المفتاح الأساسي أو بعض الإعدادات الأخرى فيه. ويتم ذلك بصورة ذرية بخلاف الأمر RENAME. ويكون مفيدًا أيضًا عندما تكون لديك عروض مادية تُفعَّل على الجدول المصدر وتريد تجنب إعادة بناء العرض.

فيما يلي مثال بسيط يوضح كيفية عمله وكيفية اختباره:

  • أنشئ قاعدة بيانات تجريبية
create database db1;
  • أنشئ جدولًا نموذجيًا
create table db1.table1_exchange
(
 id Int32,
 string_field String
)
engine = MergeTree()
order by id;
  • أدرِج صفًا تجريبيًا
insert into db1.table1_exchange
values
(1, 'a');
  • أنشئ جدولًا مؤقتًا نموذجيًا سيُجرى تبديله
create table db1.table1_exchange_temp
(
 id Int32,
 string_field String
)
engine = MergeTree()
order by id;
  • أدرِج صفًا كمثال في الجدول المؤقت
insert into db1.table1_exchange_temp
values
(2, 'b');
  • نفّذ الأمر EXCHANGE للتبديل بين الجداول
exchange tables db1.table1_exchange and db1.table1_exchange_temp;
  • تحقّق من أنه قد تم الآن تنفيذ EXCHANGE بين الجداول، وأظهر أن الصفوف قد تبدّلت
select * from db1.table1_exchange;
┌─id─┬─string_field─┐
│  2 │ b            │
└────┴──────────────┘

1 row in set. Elapsed: 0.002 sec. 
Navigation