PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेस्क्ल:एनम और कैरेक्टर अलग-अलग, अपडेटिंग

एक साधारण प्रयास के साथ समस्या यह है कि आपके पास कलाकारों को बुलाने वाला कलाकार है, कलाकारों को बुला रहा है, कलाकारों को बुला रहा है...

आपको अपनी कास्ट में varchar->enum से दूर होने के लिए किसी तरह की जरूरत है। सरलतम (सबसे समझने योग्य) तरीका केवल मैन्युअल रूप से रूपांतरित करना है। ध्यान दें कि केस स्टेटमेंट में डाले जा रहे स्ट्रिंग अक्षर टेक्स्ट नहीं हैं, वे उद्धृत-अज्ञात-प्रकार हैं जो अनंत रिकर्सन को दूर करते हैं।

BEGIN;

CREATE TYPE t_tl AS ENUM ('red', 'amber', 'green');

CREATE FUNCTION dummy_cast(varchar) RETURNS t_tl AS $$
    SELECT CASE $1
        WHEN 'red' THEN 'red'::t_tl
        WHEN 'amber' THEN 'amber'::t_tl
        WHEN 'green' THEN 'green'::t_tl
    END;
$$ LANGUAGE SQL;

CREATE CAST (varchar AS t_tl) WITH FUNCTION dummy_cast(varchar) AS ASSIGNMENT;

CREATE TABLE t (x t_tl);

INSERT INTO t VALUES ('red');
INSERT INTO t VALUES ('green'::varchar);

SELECT * FROM t;

ROLLBACK;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सबस्ट्रिंग का उपयोग करके टेक्स्ट को कैसे अलग करें

  2. PostgreSQL में गैर-अल्फ़ान्यूमेरिक वर्ण वाली पंक्तियों को वापस करने के 2 तरीके

  3. Django, PostgreSQL अनुक्रम का उपयोग

  4. डायनेमिक क्वेरी फंक्शन को पोस्टग्रेज करता है

  5. Psycopg2, Postgresql, Python:थोक-सम्मिलित करने का सबसे तेज़ तरीका