Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggugurkan Semua Fungsi Terlalu Beban dengan Nama Khusus dalam PostgreSQL?

Bagaimana untuk Menggugurkan Semua Fungsi Terlalu Beban dengan Nama Khusus dalam PostgreSQL?

DDD
Lepaskan: 2024-12-22 17:27:12
asal
983 orang telah melayarinya

How to Drop All Overloaded Functions with a Specific Name in PostgreSQL?

Menggugurkan Fungsi dengan Kad Liar

Dalam PostgreSQL, adalah mungkin untuk menggugurkan semua fungsi dengan nama tertentu tanpa mengira bilangan atau jenis parameternya mempunyai. Ini boleh berguna apabila mengurus sebilangan besar fungsi.

Pertanyaan Asas

Pertanyaan berikut mencipta semua pernyataan DDL yang diperlukan untuk menggugurkan semua fungsi dengan nama tertentu:

SELECT 'DROP FUNCTION ' || oid::regprocedure
FROM pg_proc
WHERE proname = 'my_function_name'
AND pg_function_is_visible(oid);
Salin selepas log masuk

Pertanyaan ini menjana pernyataan 'DROP FUNCTION' untuk setiap lebihan fungsi 'my_function_name', memastikan semua versi fungsi dialih keluar. Fungsi 'pg_function_is_visible()' memastikan bahawa hanya fungsi dalam laluan carian semasa dipilih.

Fungsi

Sebagai alternatif, anda boleh menggunakan fungsi PL/pgSQL untuk mengautomasikan proses menggugurkan fungsi dengan kad bebas:

CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int)
LANGUAGE plpgsql AS $$
DECLARE
  _sql text;
BEGIN
  SELECT count(*)::int
  , 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ')
  FROM pg_proc
  WHERE proname = _name
  AND pg_function_is_visible(oid)
  INTO functions_dropped, _sql;

  IF functions_dropped > 0 THEN
    EXECUTE _sql;
  END IF;
END
$$;
Salin selepas log masuk

Fungsi ini mengambil nama fungsi sebagai hujah dan mengembalikan bilangan fungsi yang digugurkan. Ia boleh dipanggil seperti berikut:

SELECT f_delfunc('my_function_name');
Salin selepas log masuk

Nota

  • Nama fungsi dalam pertanyaan dan fungsi mesti disediakan tanpa petikan dua dan sama ada -sensitif.
  • Pertanyaan dan fungsi hanya akan menggugurkan fungsi dalam laluan carian semasa.
  • Ia penting ambil perhatian bahawa kaedah ini juga akan menggugurkan fungsi terlampau beban dengan nama yang sama.
  • Sentiasa laksanakan arahan ini dengan berhati-hati kerana ia boleh mengalih keluar fungsi secara kekal daripada pangkalan data anda.

Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Semua Fungsi Terlalu Beban dengan Nama Khusus dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan