क्या मेरे पास एक टेबल दूसरे के लिए "उपनाम" या "सिमलिंक" हो सकती है?


10

मेरे पास एक ही संरचना के साथ दो टेबल हैं, ए और बी। एक निश्चित एप्लिकेशन लिखा जाता है ताकि यह हमेशा दोनों टेबल पर एक ही डेटा लिख ​​सके।

ड्राइव स्पेस को बचाने की क्षमता के बारे में एक सहकर्मी के साथ एक चर्चा के बाद, मैं सोच रहा हूं कि क्या mysql या postgresql दूसरे के रूप में "उपनाम", या "सिमलिंक" के रूप में टेबल पर बनाने की क्षमता है।

मैं चाहता हूं कि व्यवहार एक नरम फ़ाइल सिम्बल के समान हो; जहाँ या तो सिम्लिंक से ही पढ़ना है या यह लक्ष्य है वही आउटपुट देगा, और या तो लिखने से लक्ष्य अपडेट हो जाएगा।


2
क्या आपने तालिका का एक दृश्य माना है?

SQL सर्वर में आप सिर्फ एक दृश्य का उपयोग कर सकते हैं।
जेएनके

1
कौन सा RDBMS? आपने MySQL और Postgres को टैग किया है। अधिकांश RDBMSes में दृश्य काम करेंगे। ओरेकल के समानार्थक शब्द हैं, जो यूनिक्स के प्रतीकात्मक लिंक के समान हैं
फिलो

MySQL और Postgres, हाँ। मैं उन्हें विशेष रूप से पाठ में भी उल्लेख करता हूं। मैंने सोचा था कि दृश्य किसी तरह काफी नहीं थे जो मैं देख रहा था, लेकिन शायद यह ठीक होगा। बहुत बहुत धन्यवाद। कुछ उत्तर दें :)
user50849

1
और आपको दो तालिकाओं की आवश्यकता क्यों है?
चमत्कार 173

जवाबों:


5

जहाँ तक मुझे पता है, एक नया Postgresql आपको INSTEAD OFविचारों पर ट्रिगर करने देता है । तो एक टेबल, एक दृश्य के रूप SELECT * FROM table1में और आपके लिए INSTEAD OFट्रिगर insert, update, deleteहोना चाहिए। इस दृष्टिकोण हालांकि Mysql में काम करने वाला नहीं है


2

यह MySQL (केवल MyISAM स्टोरेज इंजन का उपयोग करके) में सीक्लिंक्स का उपयोग करके स्क्रैच से एक टेबल बनाना संभव है। यह लिनक्स और विंडोज (हार्डलिंक का उपयोग करके) में उपलब्ध है:

यहाँ इस विषय पर मेरी पिछली पोस्ट हैं

हालाँकि, जो आप प्रस्तावित कर रहे हैं वह लिनक्स में MySQL के बाहर करना होगा।

इस उदाहरण के लिए

  • / var / lib / mysql डेटादिर है
  • डेटाबेस mydb में MyISAM टेबल के रूप में table1 बनाएं
  • तालिका 1 को शुद्ध सिम्बल के रूप में तालिका 2 बनाएं

चरण 01) तालिका 1 बनाएं

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

STEP 02) TableB की नकल करने के लिए तीन सिमिलिंक बनाएं

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 में डालने और तालिका 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 पर DDL प्रदर्शन करें
    • तालिका 1 के विरुद्ध DDL के बाद आपको तालिका 2 सिम्बल को फिर से बनाना होगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.