PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Batasan penurunan PostgreSQL dengan nama yang tidak dikenal

Untuk menjatuhkan &membuat ulang batasan kunci asing secara dinamis, Anda dapat membungkus semuanya dalam suatu fungsi atau menggunakan DO perintah:

DO
$body$
DECLARE
   _con text := (
      SELECT quote_ident(conname)
      FROM   pg_constraint
      WHERE  conrelid = 'myschema.mytable'::regclass
      AND    confrelid = 'myschema.myreftable'::regclass
      LIMIT 1 -- there could be multiple fk constraints. Deal with it ...
      );

BEGIN
   EXECUTE '
      ALTER TABLE wuchtel12.bet DROP CONSTRAINT ' || _con;

   -- do stuff here

   EXECUTE '
      ALTER TABLE myschema.mytable
      ADD CONSTRAINT ' || _con || ' FOREIGN KEY (col)
      REFERENCES myschema.myreftable (col)';
END
$body$

Anda harus memiliki tabel untuk menggunakan ALTER TABLE .
Jika tidak, Anda dapat membuat fungsi dengan LANGUAGE plpgsql SECURITY DEFINER (menggunakan tubuh yang sama) dan

ALTER FUNCTION foo() OWNER TO postgres;

postgres menjadi pengguna super di sini - atau pemilik tabel.
Tapi pastikan untuk mengetahui apa yang dikatakan manual tentang keamanan.

Manual ini juga memiliki lebih banyak tentang perintah dinamis.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung jumlah acara bersamaan dalam SQL

  2. Dapatkan n kategori yang dikelompokkan dan jumlahkan yang lain menjadi satu

  3. Lewati beberapa nilai dalam parameter tunggal

  4. Pemantauan Database PostgreSQL:Kiat untuk Apa yang Harus Dipantau

  5. Hubungkan Aplikasi iPhone ke PostgreSQL Menggunakan Libpq