Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
HAS_TABLE_PRIVILEGE
Mengembalikan true
jika pengguna memiliki hak istimewa yang ditentukan untuk tabel tertentu dan mengembalikan false
sebaliknya.
Sintaks
catatan
Ini adalah fungsi leader-node. Fungsi ini mengembalikan kesalahan jika referensi tabel yang dibuat pengguna, tabel sistem STL atau STV, atau tampilan sistem SVV atau SVL. Untuk informasi selengkapnya tentang hak istimewa, lihatHIBAH.
has_table_privilege( [ user, ] table, privilege)
Argumen
- pengguna
-
Nama pengguna untuk memeriksa hak istimewa tabel. Defaultnya adalah memeriksa pengguna saat ini.
- tabel
-
Tabel terkait dengan hak istimewa.
- hak istimewa
-
Hak istimewa untuk memeriksa. Nilai yang valid adalah sebagai berikut:
-
SELECT
-
INSERT
-
UPDATE
-
DELETE
-
MENJATUHKAN
-
REFERENSI
-
Jenis pengembalian
BOOLEAN
Contoh
Kueri berikut menemukan bahwa pengguna GUEST tidak memiliki hak pilih pada tabel LISTING.
select has_table_privilege('guest', 'listing', 'select');
has_table_privilege
---------------------
false
Kueri berikut mencantumkan hak istimewa tabel, termasuk pilih, sisipkan, perbarui, dan hapus, menggunakan output dari tabel katalog pg_tables dan pg_user. Ini hanya sampel. Anda mungkin harus menentukan nama skema dan nama tabel dari database Anda. Untuk informasi selengkapnya, lihat Menanyakan tabel katalog.
SELECT
tablename
,usename
,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'select') AS sel
,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'insert') AS ins
,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'update') AS upd
,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'delete') AS del
FROM
(SELECT * from pg_tables
WHERE schemaname = 'public' and tablename in ('event','listing')) as tables
,(SELECT * FROM pg_user) AS users;
tablename | usename | sel | ins | upd | del
----------+-----------+--------+-------+-------+-------
event | john | true | true | true | true
event | sally | false | false | false | false
event | elsa | false | false | false | false
listing | john | true | true | true | true
listing | sally | false | false | false | false
listing | elsa | false | false | false | false
Kueri sebelumnya juga berisi gabungan silang. Untuk informasi selengkapnya, lihat JOIN contoh. Untuk menanyakan tabel yang tidak ada dalam public
skema, hapus schemaname
kondisi dari klausa WHERE dan gunakan contoh berikut sebelum kueri Anda.
SET SEARCH_PATH to 'schema_name
';