কেন পোস্টগ্রেকশেল পিজি_ডাম্প একটি টেবিল হিসাবে একটি ভিউ রফতানি করে?


10

আমি পোস্টগার্রেএসকিউএল 9.3 pg_dumpসরঞ্জামটি ব্যবহার করে কেবল সর্বজনীন স্কিমা সংজ্ঞাটি বের করার জন্য ব্যবহার করছি:

pg_dump -s -n public -h host -U postgres --dbname=db > ./schema.sql

তবে আমি যখন যাচাই করি তখন schema.sqlকোনও CREATE TABLEবিবৃতি বিবৃতির পরিবর্তে একটি বিবৃতিতে উপস্থিত হয় CREATE VIEW

তবে, যদি আমি pg_dumpনির্দিষ্ট ভিউটি ব্যবহার করে:

pg_dump -s -t myview -h host -U postgres --dbname=db > ./schema.sql

তারপরে schema.sqlআসল দেখার সংজ্ঞা রয়েছে।

তো, কেন এমন হচ্ছে? তোমাদেরকে ধন্যবাদ!

উত্তর:


12

অভ্যন্তরীণভাবে, একটি ভিউ একটি নিয়ম সহ কেবল একটি টেবিল, সুতরাং এটি উপলব্ধি করে।

এখানে দেখুন: https://postgresql.org/docs/9.5/static/rules-views.html

পোস্টগ্রিএসকিউএল-এ দেখা নিয়ম সিস্টেমটি ব্যবহার করে প্রয়োগ করা হয়। আসলে, এর মধ্যে মূলত কোনও পার্থক্য নেই:

CREATE VIEW myview AS SELECT * FROM mytab;

দুটি আদেশের তুলনায়:

CREATE TABLE myview (same column list as mytab);
CREATE RULE "_RETURN" AS ON SELECT TO myview DO INSTEAD
    SELECT * FROM mytab;

কারণ CREATE VIEWকমান্ডটি অভ্যন্তরীণভাবে ঠিক তাই করে । এর কিছু পার্শ্ব প্রতিক্রিয়া রয়েছে। এর মধ্যে একটি হ'ল পোস্টগ্রেএসকিউএল সিস্টেম ক্যাটালগগুলিতে একটি ভিউ সম্পর্কিত তথ্য যেমন কোনও টেবিলের মতো হয় তেমনই। সুতরাং পার্সারটির জন্য, কোনও টেবিল এবং দৃশ্যের মধ্যে একেবারেই কোনও পার্থক্য নেই। তারা একই জিনিস: সম্পর্ক।

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