it-swarm.asia

لا يمكن إعادة تسمية الأعمدة في عروض PostgreSQL باستخدام CREATE OR REPLACE

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

هذا يعمل

CREATE OR REPLACE VIEW gfam.Nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;

ما سبق يجعل نسخة مكررة من جدول family_tree لكن المحاولة التالية فشلت:

CREATE OR REPLACE VIEW gfam.Nice_builds AS 
 SELECT (family_tree.family_tree_id) as x,
        family_tree.family_tree_name, family_tree.family_tree_description
   FROM gfam.family_tree;
  • خطأ: لا يمكن تغيير اسم عمود العرض "family_tree_id"

كيف يمكنني إعادة تسمية الأعمدة؟

40
Aleksandr Levchuk

يمكنني إعادة إظهار الخطأ ... في حالتي ، أنشأت عمودًا أولاً باسم "التاريخ" ثم كـ "x" (كنت أحاول معرفة ما إذا كانت هناك مشكلة في كلمة محجوزة ؛ لم يكن:

ERROR:  cannot change name of view column "date" to "x"

إذا قمت بإصدار drop view أولاً ، سيتيح لك إعادة إنشاء العرض باسم متغير. ليس لدي أي فكرة عن السبب create or replace لن تفعل ذلك.


توضيح كولين تي هارت :

وثائق CREATE VIEW يشرح ذلك بشكل جيد ، أعتقد:

يجب أن يقوم الاستعلام الجديد بإنشاء نفس الأعمدة التي تم إنشاؤها بواسطة استعلام العرض الحالي (أي ، نفس أسماء الأعمدة في نفس الترتيب وبنفس أنواع البيانات) ، ولكنه قد يضيف أعمدة إضافية إلى نهاية القائمة.

50
Joe

يمكنك استخدام ALTER TABLE tbl RENAME COLUMN foo TO bar لإعادة تسمية أعمدة العرض أيضًا.

31
Peter Eisentraut