Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggugurkan Fungsi PostgreSQL Dengan Selamat Tanpa Mengetahui Parameternya?

Bagaimana untuk Menggugurkan Fungsi PostgreSQL Dengan Selamat Tanpa Mengetahui Parameternya?

DDD
Lepaskan: 2024-12-26 15:40:20
asal
1040 orang telah melayarinya

How to Safely Drop PostgreSQL Functions Without Knowing Their Parameters?

Menggugurkan Fungsi Tanpa Pengetahuan Parameter

Dalam Postgres, mengurus fungsi yang disimpan dalam fail teks boleh menjadi mencabar apabila menambah atau mengalih keluar parameter pada fungsi sedia ada. Untuk menangani isu ini, kaedah kad bebas wujud untuk menggugurkan semua fungsi dengan nama tertentu, tanpa mengira bilangan atau jenis parameter.

Pertanyaan Asas

Laksanakan pertanyaan berikut untuk menjana pernyataan DDL 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

Ganti 'my_function_name' dengan nama fungsi sebenar anda (sensitif huruf besar dan tanpa petikan berganda). Pertanyaan ini mengembalikan senarai pernyataan DROP FUNCTION dengan jenis parameter yang betul untuk semua lebihan fungsi.

Pendekatan Fungsi

Untuk pelaksanaan segera kenyataan drop, pertimbangkan untuk mencipta fungsi PL/pgSQL :

CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int)
LANGUAGE plpgsql AS
$func$
DECLARE
   _sql text;
BEGIN
   SELECT count(*)::int
        , 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ')
   FROM pg_catalog.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
$func$;
Salin selepas log masuk

Untuk menggugurkan semua fungsi yang dinamakan 'my_function_name':

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

Fungsi ini akan mengembalikan bilangan fungsi yang digugurkan.

Pertimbangan

  • Kaedah ini menggugurkan semua fungsi dengan nama yang ditentukan, tanpa mengira pemilik atau skema mereka.
  • Berhati-hati apabila menggunakan kaedah ini kerana ia boleh membawa kepada fungsi yang tidak diingini penyingkiran.
  • Untuk versi yang lebih lama daripada Postgres 9.1, sedikit pengubahsuaian diperlukan. Rujuk sejarah suntingan jawapan untuk mendapatkan butiran.

Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Fungsi PostgreSQL Dengan Selamat Tanpa Mengetahui Parameternya?. 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