Tôi đang cố gắng để có được một hàm psql sẽ cắt bớt một tên bảng đã cho nếu nó tồn tại. Tôi đã thử nhiều chức năng, nhưng không ai trong số họ làm việc cho đến nay. Đây là mã:
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
Bây giờ, tôi có thể làm cho nó hoạt động trong một thủ tục đơn giản với tên bị mã hóa:
do $$
begin
IF EXISTS (SELECT *
FROM information_schema.tables
WHERE table_name = genre_epf)
THEN
TRUNCATE genre_epf;
END IF;
end
$$;
Nhưng tôi không thể quấn đầu về cách trộn cả hai truy vấn. Tôi làm gì sai ở đây ?
TRUNCATE tableName;
. Bạn đang cố gắng cắt bớt một bảng có têntableName
,