2013-08-14 5 views
6

मैं array of enums कैसे डाल सकता हूं?
यहाँ है मेरी enum:पोस्टग्रेएसक्यूएल इंसर्ट एनम्स की एक सरणी में

CREATE TYPE equipment AS ENUM ('projector','PAsystem','safe','PC','phone'); 

तब मेरे तालिका उपकरण की एक सरणी है:

CREATE TABLE lecture_room (
    id INTEGER DEFAULT NEXTVAL('lecture_id_seq') 
, seatCount int 
, equipment equipment[] 
) INHERITS(venue); 

यहाँ INSERT करने के लिए अपने प्रयास है:

INSERT INTO lecture_room (building_code, floorNo, roomNo, length, width 
         , seatCount, equipment) 
VALUES 
('IT', 4, 2, 10, 15 ,120, ARRAY['projector','PAsystem','safe']), 

लेकिन यह मेरा पीछा कर देता है त्रुटि:

ERROR: column "equipment" is of type equipment[] but expression is of type text[] 
SQL state: 42804 
Hint: You will need to rewrite or cast the expression. 

उत्तर

9

PostgreSQL को प्रकार के इनपुट के लिए text प्रकार के इनपुट को स्वचालित रूप से कैसे डालना है, यह नहीं पता है। आप स्पष्ट रूप से प्रकार equipment की जा रही है के रूप में अपने तार घोषित करने के लिए है:

ARRAY['projector','PAsystem','safe']::equipment[] 

मैं SQL Fiddle के साथ इस की पुष्टि की।

'{projector,PAsystem,safe}'::equipment[] 

इस प्रकार कम है और कुछ ग्राहकों ARRAY निर्माता है, जो एक समारोह की तरह तत्व है साथ कोई समस्या है:

0

पुराना सवाल, लेकिन एक नया उत्तर। पोस्टग्रेज़ के आधुनिक संस्करणों में (9.6 के साथ परीक्षण किया गया) इनमें से कोई भी आवश्यक नहीं है। यह अपेक्षित के रूप में काम करता है:

INSERT INTO lecture_room (equipment) VALUES ('{"projector", "safe"}'); 
संबंधित मुद्दे