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

Bagaimana cara membuat pemicu untuk memperbarui kolom di tabel lain?

mydatabase adalah nama yang sangat disayangkan untuk sebuah skema .

Fungsi pemicu dapat terlihat seperti ini:

CREATE OR REPLACE FUNCTION trg_upaft_upd_trip()
  RETURNS TRIGGER AS
$func$
BEGIN

UPDATE mydatabase.trip t    -- "mydatabase" = schema name (?!)
SET    last_updated = now()
WHERE  t.id = NEW.trip_id   -- guessing column names      

RETURN NULL;                -- calling this AFTER UPDATE

END
$func$  LANGUAGE plpgsql;

Dan perlu digunakan dalam pemicu di setiap tabel terkait (bukan di trip sendiri):

CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();

Anda juga perlu menutupi INSERT dan DELETE (dan mungkin COPY ) pada semua sub-tabel ...

Pendekatan ini memiliki banyak titik kegagalan potensial. Sebagai alternatif, pertimbangkan kueri atau tampilan yang menghitung last_updated terbaru dari sub-tabel secara dinamis. Jika Anda sering memperbarui, ini mungkin pendekatan yang lebih baik.
Jika Anda jarang UPDATE dan SELECT sering kali, pendekatan pertama Anda mungkin membuahkan hasil.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Meningkatkan kinerja kueri jsonb Postgres yang dikombinasikan dengan kueri relasional

  2. Kesalahan Kompilasi Dokku - Django.core.exceptions.ImproperlyConfigured:Kesalahan memuat modul psycopg2:Tidak ada modul bernama 'psycopg2'

  3. Bagaimana cara menghapus tanda kutip tunggal dari tabel di postgresql?

  4. Pencadangan Inkremental PostgreSQL dan Pemulihan Point-In-Time

  5. Bagaimana cara mendapatkan hitungan hari Minggu bulan ini di psql?