Saya mencoba untuk mendapatkan fungsi psql yang akan memotong nama tabel yang diberikan jika ada. Saya sudah mencoba banyak fungsi, tetapi tidak ada yang bekerja sejauh ini. Ini kodenya:
CREATE OR REPLACE FUNCTION truncateIfExists(tableName TEXT)
returns void
as $$
BEGIN
EXECUTE format(
'IF EXISTS (
SELECT *
FROM information_schema.tables
WHERE table_name =' || tableName || '
)
THEN
TRUNCATE tableName;
END IF;
');
END;
$$language plpgsql
Sekarang, saya bisa membuatnya bekerja dalam prosedur sederhana dengan nama yang harcoded:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
Tapi saya tidak bisa membungkus kepala saya tentang cara mencampur kedua pertanyaan. Apa yang saya lakukan salah di sini?
postgresql
functions
Stanislasdrg Reinstate Monica
sumber
sumber
TRUNCATE tableName;
. Anda mencoba untuk memotong sebuah tabel bernamatableName
,Jawaban:
Gunakan variabel DITEMUKAN :
Perhatikan bahwa saya telah menggunakan
PERFORM
alih-alihSELECT
karena saya tidak memerlukan output dari kueri. Saya ingin tahu apakah kueri mengembalikan baris (FOUND = true
) atau tidak (FOUND = false
).sumber