আমার কাছে tag
দুটি কলাম সহ একটি টেবিল রয়েছে: id
(ইউইইডি) এবং name
(পাঠ্য)। আমি এখন টেবিলটিতে একটি নতুন ট্যাগ সন্নিবেশ করতে চাই, তবে ট্যাগটি ইতিমধ্যে উপস্থিত থাকলে, আমি কেবল id
বিদ্যমান রেকর্ডটি পেতে চাই ।
আমি ধরে নিয়েছিলাম যে আমি কেবল এর ON CONFLICT DO NOTHING
সাথে সংমিশ্রণে ব্যবহার করতে পারি RETURNING "id"
:
INSERT INTO
"tag" ("name")
VALUES( 'foo' )
ON CONFLICT DO NOTHING
RETURNING "id";
"Foo" নামের ট্যাগটি যদি ইতিমধ্যে বিদ্যমান থাকে তবে এটি একটি খালি ফলাফল সেটটি দেয়।
আমি তখন নোপ ক্লজটি ব্যবহার করতে ক্যোয়ারীটি পরিবর্তন করেছি DO UPDATE
:
INSERT INTO
"tag" ("name")
VALUES( 'foo' )
ON CONFLICT ("name") DO UPDATE SET "name" = 'foo'
RETURNING "id";
এটি ইচ্ছাকৃত হিসাবে কাজ করে তবে এটি কিছুটা বিভ্রান্তিকর কারণ আমি ইতিমধ্যে বিদ্যমান মানটিতে নামটি সেট করছি।
এই সমস্যাটি সম্পর্কে কি এই উপায় বা আমি অনুপস্থিত একটি সহজ পদ্ধতির আছে?
ERROR: missing FROM-clause entry for table "excluded"
ব্যবহারের সময় আমাকে দেয় DO NOTHING
।
returning excluded.id
?