আমি কি একটি টেবিলের সাথে অন্য একটি "ওরফে" বা "সিমলিংক" রাখতে পারি?


10

আমার একই কাঠামো সহ দুটি টেবিল রয়েছে, এ এবং বি একটি নির্দিষ্ট অ্যাপ্লিকেশন লেখা রয়েছে যাতে এটি সর্বদা উভয় টেবিলে একই ডেটা লেখেন।

ড্রাইভের জায়গা বাঁচানোর সম্ভাবনা সম্পর্কে কোনও সহকর্মীর সাথে আলোচনার পরে, আমি ভাবছি যে মাইএসকিএল বা পোস্টগ্রিস্কিলের টেবিলে অন্য একটি "ওরফে" বা "সিমলিংক" তৈরি করার ক্ষমতা আছে কি না।

আমি চাই আচরণটি একটি নরম ফাইল সিমিলিংকের সাথে একই রকম হয়; যেখানে নিজেই সিমলিংক বা এটির লক্ষ্য থেকে পাঠ করলে একই আউটপুট পাওয়া যাবে এবং লিখিতভাবে লক্ষ্যটি আপডেট হবে।


2
আপনি কি টেবিলের একটি দৃশ্য বিবেচনা করেছেন?

এসকিউএল সার্ভারে আপনি কেবল একটি দর্শন ব্যবহার করতে পারেন।
জেএনকে

1
কোন আরডিবিএমএস? আপনি মাইএসকিউএল এবং পোস্টগ্র্যাস ট্যাগ করেছেন। ভিউগুলি বেশিরভাগ আরডিবিএমএসে কাজ করবে। ওরাকলের প্রতিশব্দ রয়েছে, যা ইউনিক্স প্রতীকী লিঙ্কগুলির সমান
ফিলি

মাইএসকিউএল এবং পোস্টগ্রিস, হ্যাঁ আমি তাদের লেখার ক্ষেত্রেও বিশেষভাবে উল্লেখ করেছি। আমি ভেবেছিলাম ভিউজগুলি আমি যেভাবে খুঁজছিলাম তা পুরোপুরি নয় তবে সম্ভবত এটি ঠিক থাকবে। অনেক ধন্যবাদ. কিছু উত্তর পোস্ট করুন :)
ব্যবহারকারী 50849

1
এবং আপনার দুটি টেবিলের দরকার কেন?
অলৌকিক ঘটনা 173

উত্তর:


5

আমি যতদূর জানি, একটি নতুন পোস্টগ্র্যাস্কল আপনাকে ভিউগুলিতে INSTEAD OFট্রিগার করতে দেয় । সুতরাং একটি টেবিল, যেমন একটি দর্শন SELECT * FROM table1, এবং এর INSTEAD OFজন্য ট্রিগার insert, update, deleteথাকা আপনার পক্ষে কাজ করা উচিত। এই পদ্ধতির যদিও মাইএসকিএলে কাজ হবে না


2

সিমলিঙ্কগুলি ব্যবহার করে স্ক্র্যাচ থেকে একটি টেবিল তৈরি করা মাইএসকিউএলে (কেবল মাইআইএসএএম স্টোরেজ ইঞ্জিন ব্যবহার করে) সম্ভব is এটি লিনাক্স এবং উইন্ডোজে (হার্ডলিঙ্কগুলি ব্যবহার করে) সম্ভাব্য:

এই বিষয়ে আমার অতীত পোস্ট এখানে

তবে, আপনি যা প্রস্তাব করছেন তা লিনাক্সের মাইএসকিউএল এর বাইরে করা উচিত।

এই উদাহরণের জন্য

  • / var / lib / mysql হ'ল ডেটাডির
  • ডাটাবেস মাইডিবিতে টেবিল 1 মাইআইএসএএম টেবিল হিসাবে তৈরি করুন
  • টেবিল 2 কে টেবিল 1 এর খাঁটি প্রতিচ্ছবি হিসাবে তৈরি করুন

পদক্ষেপ 01) টেবিল 1 তৈরি করুন

CREATE TABLE mydb.table1
(
    id int not null auto_increment,
    mydata varchar(255) not null,
    primary key (id)
) ENGINE=MyISAM;

পদক্ষেপ 02) টেবিলবি নকল করতে তিনটি সিমলিংক তৈরি করুন

cd /var/lib/mysql/mydb
ln -s table1.frm table2.frm
ln -s table1.MYD table2.MYD
ln -s table1.MYI table2.MYI

পদক্ষেপ 03) টেবিল 1 এ andোকানো এবং টেবিল 2 থেকে পড়ার চেষ্টা করুন। তারপরে বিপরীতে চেষ্টা করুন।

INSERT INTO table1 (mydata) VALUES ('rolando'),('edwards');
SELECT * FROM table2;
INSERT INTO table2 (mydata) VALUES ('abraham'),('lincoln');
SELECT * FROM table1;

যদি সবকিছু স্বাভাবিক আচরণ করে, তবে আপনি এটি এটি করতে পারেন।

বিচারকার্য স্থগিত রাখার আদেশ

  1. কেবল একটি টেবিল আছে, টেবিল 1
  2. আপনি যদি কোনও ডিডিএল করেন
    • টেবিল 1 এ ডিডিএল সম্পাদন করুন
    • আপনাকে অবশ্যই টেবিল 1 এর বিপরীতে ডিডিএলের পরে টেবিল 2 সিমলিঙ্কগুলি পুনরায় তৈরি করতে হবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.