एक साधारण प्रयास के साथ समस्या यह है कि आपके पास कलाकारों को बुलाने वाला कलाकार है, कलाकारों को बुला रहा है, कलाकारों को बुला रहा है...
आपको अपनी कास्ट में 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;