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

Pemicu Pembaruan PostgreSQL

Seperti yang @SpartanElite tunjukkan , Anda memicu pengulangan tanpa akhir.

Sederhanakan fungsi pemicu:

CREATE OR REPLACE FUNCTION set_angle()
  RETURNS TRIGGER AS
$func$
BEGIN
   NEW."rotationAngle" := degrees(
                             ST_Azimuth(
                                ST_StartPoint(NEW.the_geom)
                              , ST_EndPoint(NEW.the_geom)
                             )
                          ) - 90;
   RETURN NEW;
END
$func$ LANGUAGE plpgsql;
  • Tetapkan ke NEW secara langsung. Tidak ada WHERE dalam hal ini.
  • Anda harus kutip ganda nama kolom ilegal. Lebih baik tidak menggunakan nama seperti itu untuk memulai.
    Terbaru jawaban terkait.
  • Kode untuk insert &upgrade sama. Saya melipat menjadi satu jalur kode.

Gunakan BEFORE pemicu. Dengan cara ini Anda dapat mengedit kolom dari baris pemicu secara langsung sebelum mereka disimpan:

CREATE TRIGGER set_angle
BEFORE INSERT OR UPDATE ON annotations
FOR EACH ROW EXECUTE PROCEDURE set_angle();

Namun

Jika Anda hanya mencoba untuk mempertahankan nilai yang bergantung secara fungsional dalam tabel (dan tidak ada pertimbangan lain):Jangan . Gunakan tampilan atau kolom yang dihasilkan sebagai gantinya:

Maka Anda tidak memerlukan semua ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. rel dinamis tempat kueri sql

  2. Bagaimana cara mengetahui apakah suatu urutan diinisialisasi dalam sesi ini?

  3. Bagaimana cara menerapkan tsvector PostgresQL untuk pencarian teks lengkap menggunakan Sequelize?

  4. Fungsi PostgreSQL yang ditentukan pengguna dalam dialek hibernasi melempar pengecualian

  5. Pernyataan SQL tidak terhapus di PHP